tics2txt-back - ics2txt - convert icalendar .ics file to plain text | |
git clone git://bitreich.org/ics2txt git://hg6vgqziawt5s4dj.onion/ics2txt | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
tics2txt-back (1335B) | |
--- | |
1 #!/usr/bin/awk -f | |
2 | |
3 function isleap(year) | |
4 { | |
5 return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0) | |
6 } | |
7 | |
8 function mdays(mon, year) | |
9 { | |
10 return (mon == 2) ? (28 + isleap(year)) : (30 + (mon + (mon > 7)… | |
11 } | |
12 | |
13 function timegm(year, mon, mday, hour, min, sec) | |
14 { | |
15 while (--mon >= 1) | |
16 mday += mdays(mon, year) | |
17 while (--year >= 1970) | |
18 mday += 365 + isleap(year) | |
19 return (((((mday - 1) * 24) + hour) * 60) + min) * 60 + sec | |
20 } | |
21 | |
22 function date_text(str, offset, | |
23 year, mon, mday, hour, min) | |
24 { | |
25 year = substr(str, 1, 4) | |
26 mon = substr(str, 6, 2) | |
27 mday = substr(str, 9, 2) | |
28 hour = substr(str, 12, 2) | |
29 min = substr(str, 15, 2) | |
30 return timegm(year, mon, mday, hour, min, 0) - offset | |
31 } | |
32 | |
33 { | |
34 gsub(/\t/, " ") | |
35 } | |
36 | |
37 /^TZ[+-]/ { | |
38 hour = substr($0, 4, 2) | |
39 min = substr($0, 6, 2) | |
40 tzoffset = substr(zone, 3, 1) hour * 3600 + min * 60 | |
41 next | |
42 } | |
43 | |
44 /^[0-9]+-[0-9]+-[0-9]+ / { | |
45 time = date_text($1 " " $2, tzoffset) | |
46 row++ | |
47 } | |
48 | |
49 /^ / { | |
50 d = $0 | |
51 sub(/^ */, "", d) | |
52 des = des " " d | |
53 } | |
54 | |
55 /^$/ { | |
56 if (beg) | |
57 printf "%d\t%d\t%s\t%s\t%s\t%s\n", beg, end, cat, loc, s… | |
58 beg = end = cat = loc = sum = des = "" | |
59 } | |
60 | |
61 row == 1 { | |
62 beg = time | |
63 sum = $0 | |
64 sub(/^[^ ]+ +[^ ]+ +/, "", sum) | |
65 } | |
66 | |
67 row == 2 { | |
68 end = time | |
69 | |
70 line = $0 | |
71 sub(/^[^ ]+ +[^ ]+ +/, "", line) | |
72 | |
73 cat = line | |
74 sub(/\].*/, "", cat) | |
75 sub(/^\[/, "", cat) | |
76 | |
77 loc = line | |
78 sub(/[^]]*\] */, "", loc) | |
79 | |
80 row = 0 | |
81 } |