SMOLNET PORTAL home about changes
iimported project from ~/bin repo - ics2txt - convert icalendar .ics file to plain text	Err	bitreich.org	70
hgit clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt	URL:git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt	bitreich.org	70
1Log	/scm/ics2txt/log.gph	bitreich.org	70
1Files	/scm/ics2txt/files.gph	bitreich.org	70
1Refs	/scm/ics2txt/refs.gph	bitreich.org	70
1Tags	/scm/ics2txt/tag	bitreich.org	70
1README	/scm/ics2txt/file/README.md.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit c2ed3821e4f01043c1e8b3c9572c36ee6ff49af3	/scm/ics2txt/commit/c2ed3821e4f01043c1e8b3c9572c36ee6ff49af3.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Thu, 19 Apr 2018 03:41:16 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iimported project from ~/bin repo	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  A Makefile                            |      10 ++++++++++	Err	bitreich.org	70
i  A agenda                              |     182 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  A agenda.1                            |      80 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 272 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/ics2txt/file/Makefile.gph	bitreich.org	70
i@@ -0,0 +1,10 @@	Err	bitreich.org	70
i+BIN        = agenda	Err	bitreich.org	70
i+MAN1        = agenda.1	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+all:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+install:	Err	bitreich.org	70
i+        mkdir -p $(PREFIX)/bin	Err	bitreich.org	70
i+        cp $(BIN) $(PREFIX)/bin	Err	bitreich.org	70
i+        mkdir -p $(PREFIX)/share/man/man1	Err	bitreich.org	70
i+        cp $(MAN1) $(PREFIX)/share/man/man1	Err	bitreich.org	70
1diff --git a/agenda b/agenda	/scm/ics2txt/file/agenda.gph	bitreich.org	70
i@@ -0,0 +1,182 @@	Err	bitreich.org	70
i+#!/usr/bin/awk -f	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# handle ical agenda and display them in plain text	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function leap(yrs)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        return (yrs % 4 == 0) && (yrs % 100 != 0) || (yrs % 400 == 0);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function days_per_month(mth, yrs)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        if (mth == 2)	Err	bitreich.org	70
i+                return 28 + leap(yrs);	Err	bitreich.org	70
i+        else	Err	bitreich.org	70
i+                return 30 + (mth - (mth > 7)) % 2;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function to_sec(yrs, mth, day, hrs, min, sec)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        while (--mth >= 1)	Err	bitreich.org	70
i+                day += days_per_month(mth, yrs);	Err	bitreich.org	70
i+        while (--yrs >= 1970)	Err	bitreich.org	70
i+                day += 365 + leap(yrs);	Err	bitreich.org	70
i+        return (((((day - 1) * 24) + hrs) * 60) + min) * 60 + sec;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function to_date(fmt, sec)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        for (yrs = 1970; sec >= (s = 3600 * 24 * (365 + leap(yrs))); yrs++)	Err	bitreich.org	70
i+                sec -= s;	Err	bitreich.org	70
i+        for (mth = 1; sec >= (s = 3600 * 24 * days_per_month(mth, yrs)); mth++)	Err	bitreich.org	70
i+                sec -= s;	Err	bitreich.org	70
i+        for (day = 1; sec >= (s = 3600 * 24); day++)	Err	bitreich.org	70
i+                sec -= s;	Err	bitreich.org	70
i+        for (hrs = 0; sec >= 3600; hrs++)	Err	bitreich.org	70
i+                sec -= 3600;	Err	bitreich.org	70
i+        for (min = 0; sec >= 60; min++)	Err	bitreich.org	70
i+                sec -= 60;	Err	bitreich.org	70
i+        return sprintf(fmt, yrs, mth, day, hrs, min, sec);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function date_ical(str, off) {	Err	bitreich.org	70
i+        yrs = substr(str,  1, 4);	Err	bitreich.org	70
i+        mth = substr(str,  5, 2);	Err	bitreich.org	70
i+        day = substr(str,  7, 2);	Err	bitreich.org	70
i+        hrs = substr(str, 10, 2);	Err	bitreich.org	70
i+        min = substr(str, 12, 2);	Err	bitreich.org	70
i+        return to_sec(yrs, mth, day, hrs, min, 0) - off;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function date_iso8601(date, off)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        yrs = substr(date,  1, 4);	Err	bitreich.org	70
i+        mth = substr(date,  6, 2);	Err	bitreich.org	70
i+        day = substr(date,  9, 2);	Err	bitreich.org	70
i+        hrs = substr(date, 12, 2);	Err	bitreich.org	70
i+        min = substr(date, 15, 2);	Err	bitreich.org	70
i+        return to_sec(yrs, mth, day, hrs, min, 0) - off;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function swap(array, a, b)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        tmp = array[a];	Err	bitreich.org	70
i+        array[a] = array[b];	Err	bitreich.org	70
i+        array[b] = tmp;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function sort(array, beg, end)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        if (beg >= end)                                        # end recursion	Err	bitreich.org	70
i+                return;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        a = beg + 1;                                        # #1 is the pivot	Err	bitreich.org	70
i+        b = end;	Err	bitreich.org	70
i+        while (a < b) {	Err	bitreich.org	70
i+                while (a < b && array[a] <= array[beg])        # beg: skip lesser	Err	bitreich.org	70
i+                        a++;	Err	bitreich.org	70
i+                while (a < b && array[b] > array[beg])        # end: skip greater	Err	bitreich.org	70
i+                        b--;	Err	bitreich.org	70
i+                swap(array, a, b);                        # found 2 misplaced	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (array[beg] > array[a])                        # put the pivot back	Err	bitreich.org	70
i+                swap(array, beg, a);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        sort(array, beg, a - 1);                        # sort lower half	Err	bitreich.org	70
i+        sort(array, a, end);                                # sort higher half	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function parse_ical(list, off)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        FS = "[:;]";	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (getline) {	Err	bitreich.org	70
i+                gsub("\\\\[ntr]", "  ");	Err	bitreich.org	70
i+                gsub("[ \t]*<[a-zA-Z0-9/]*>*[ \t]*", "");	Err	bitreich.org	70
i+                gsub("\\\\", "");	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (match($0, "^ ")) {	Err	bitreich.org	70
i+                        event[type] = event[type] substr($0, 2, length($0) - 1);	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        type = $1;	Err	bitreich.org	70
i+                        i = index($0, ":");	Err	bitreich.org	70
i+                        event[type] = substr($0, i + 1, length($0) - i);	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if ($0 ~ /END:VEVENT/)	Err	bitreich.org	70
i+                        list[++nb] = sprintf("%d\t%d\t%s\t%s\t%s\t%s",	Err	bitreich.org	70
i+                            date_ical(event["DTSTART"], off),	Err	bitreich.org	70
i+                            date_ical(event["DTEND"], off),	Err	bitreich.org	70
i+                            event["CATEGORIES"],	Err	bitreich.org	70
i+                            event["SUMMARY"],	Err	bitreich.org	70
i+                            event["LOCATION"],	Err	bitreich.org	70
i+                            event["DESCRIPTION"]);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        sort(list, 1, nb);	Err	bitreich.org	70
i+        return nb;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function txt(off)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        nb = parse_ical(list, off);	Err	bitreich.org	70
i+        for (i = 1; i <= nb; i++) {	Err	bitreich.org	70
i+                split(list[i], arr, "\t");	Err	bitreich.org	70
i+                txt_one(arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function txt_one(beg, end, cat, sum, loc, des, off) {	Err	bitreich.org	70
i+        b = to_date("%04d/%02d/%02d %02d:%02d", beg + off);	Err	bitreich.org	70
i+        e = to_date("%04d/%02d/%02d %02d:%02d", end + off);	Err	bitreich.org	70
i+        b_mth = substr(b, 1, 7);	Err	bitreich.org	70
i+        b_day = substr(b, 9, 2);	Err	bitreich.org	70
i+        e_day = substr(e, 9, 2);	Err	bitreich.org	70
i+        b_hrs = substr(b, 12);	Err	bitreich.org	70
i+        e_hrs = substr(e, 12);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        printf("%s\n%2s  %2s  %s\n%2s  %2s  %s%s\n",	Err	bitreich.org	70
i+            (b_mth != l_mth)        ? ("\n[" b_mth "]\n")        : (""),	Err	bitreich.org	70
i+            (b_day != l_day)        ? (b_day)                : (""), b_hrs, sum,	Err	bitreich.org	70
i+            (b_day != e_day)        ? (e_day)                : (""), e_hrs,	Err	bitreich.org	70
i+            (cat)                 ? ("[" cat "] ")        : (""), loc);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while ((line = substr(des, 1, 66)) != "") {	Err	bitreich.org	70
i+                if (length(line) == 66)	Err	bitreich.org	70
i+                        sub(" +[^ ]*$", "", line);	Err	bitreich.org	70
i+                printf("           %s\n", line);	Err	bitreich.org	70
i+                des = substr(des, length(line) + 1);	Err	bitreich.org	70
i+                sub("^ *", "", des);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        l_mth = b_mth;	Err	bitreich.org	70
i+        l_day = b_day;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function tsv(off)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        n = parse_ical(list, off);	Err	bitreich.org	70
i+        for (i = 0; i < n; i++)	Err	bitreich.org	70
i+                print(list[i]);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+function usage()	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        print("usage: agenda txt file.ics...");	Err	bitreich.org	70
i+        print("       agenda tsv file.ics...");	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+BEGIN {	Err	bitreich.org	70
i+        "date +%z" | getline off;	Err	bitreich.org	70
i+        close("date +%z");	Err	bitreich.org	70
i+        off = substr(off, 1, 3) * 3600;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (ARGV[1] == "txt") {	Err	bitreich.org	70
i+                ARGV[1] = ARGV[--ARGC];	Err	bitreich.org	70
i+                txt(off);	Err	bitreich.org	70
i+        } else if (ARGV[1] == "tsv") {	Err	bitreich.org	70
i+                ARGV[1] = ARGV[--ARGC];	Err	bitreich.org	70
i+                tsv(off);	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                usage();	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
1diff --git a/agenda.1 b/agenda.1	/scm/ics2txt/file/agenda.1.gph	bitreich.org	70
i@@ -0,0 +1,80 @@	Err	bitreich.org	70
i+.Dd $Mdocdate: February 23 2018$	Err	bitreich.org	70
i+.Dt AGENDA 1	Err	bitreich.org	70
i+.Os	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh NAME	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm agenda	Err	bitreich.org	70
i+.Nd plain text agenda with ical support	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh SYNOPSIS	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm Ic txt Op +- Ar offset Op Ar ics file...	Err	bitreich.org	70
i+.Nm Ic tsv Op +- Ar offset Op Ar ics file...	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh DESCRIPTION	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+displays iCalendar 	Err	bitreich.org	70
i+.Pq ical, Pa .ics	Err	bitreich.org	70
i+files created by.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bl -tag -width indent	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Nm Ic txt Op +- Ar offset Op Ar ics file...	Err	bitreich.org	70
i+Display the agenda(s)	Err	bitreich.org	70
i+.Ar file	Err	bitreich.org	70
i+as plain text sorted by date.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Nm Ic tsv Op +- Ar offset Op Ar ics file...	Err	bitreich.org	70
i+Display the agenda(s)	Err	bitreich.org	70
i+.Ar file	Err	bitreich.org	70
i+as a tab-separated values	Err	bitreich.org	70
i+.Pq tsv	Err	bitreich.org	70
i+one entry per line, with the following fields in order:	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bl -tag -width xDESCRIPTIONx -compact	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li DTSTART	Err	bitreich.org	70
i+begin date as an UNIX timestamp	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li DTEND	Err	bitreich.org	70
i+end date as an UNIX timestamp	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li CATEGORY	Err	bitreich.org	70
i+category	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li SUMMARY	Err	bitreich.org	70
i+symmary	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li LOCATION	Err	bitreich.org	70
i+location	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Dq Li DESCRIPTION	Err	bitreich.org	70
i+description	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.El	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh ENVIRONMENT	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bl -tag -width 6n	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Ev TZ	Err	bitreich.org	70
i+Timezone to use for printing the dates.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.El	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh SEE ALSO	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Xr calendar 1 ,	Err	bitreich.org	70
i+.Xr date 1 ,	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh AUTHORS	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.An Josuah Demangeon Aq Mt mail@josuah.net	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ics2txt/commit/c2ed3821e4f010...
Content-Typetext/plain; charset=utf-8