|
|
tics2txt-back - ics2txt - convert icalendar .ics file to plain text |
|
|
 |
git clone git://bitreich.org/ics2txt git://hg6vgqziawt5s4dj.onion/ics2txt (git://bitreich.org) |
|
|
 |
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)) % 2) |
|
|
|
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, sum, des |
|
|
|
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 } |
|