From 3dc6cc287227bdfc218e79ea4753b601689eff2a Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 11 Sep 2020 23:39:47 +0200 Subject: ics: clean Event module, conversion to string Signed-off-by: Alban Gruin --- src/ics.ml | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'src/ics.ml') diff --git a/src/ics.ml b/src/ics.ml index 5bfecb0..2ee0269 100644 --- a/src/ics.ml +++ b/src/ics.ml @@ -17,10 +17,45 @@ open CalendarLib -type event = { - start: Calendar.t; - stop: Calendar.t; - summary: string; - category: string; - location: string - } +let to_date = Printer.Calendar.sprint "%Y%m%dT%H%M%SZ" +let current_date () = to_date @@ Calendar.now () + +module Event = struct + type t = { + start: Calendar.t; + stop: Calendar.t; + summary: string; + location: string; + } + + let make start stop summary location = + {start; stop; summary; location} + + let to_string date event id = + Printf.sprintf "BEGIN:VEVENT\n\ + UID:%s.%d@ucs.pa1ch.fr\n\ + DTSTART:%s\n\ + DTEND:%s\n\ + DTSTAMP:%s\n\ + SUMMARY:%s\n\ + LOCATION:%s\n\ + END:VEVENT\n" + date id (to_date event.start) (to_date event.stop) + date event.summary event.location +end + +type t = Event.t list + +let make (events: t) = events + +let to_string events = + let date = current_date () in + let rec gen_events id str = function + | [] -> str + | event :: l -> + gen_events (id + 1) (str ^ Event.to_string date event id) l in + "BEGIN:VCALENDAR\n\ + VERSION:2.0\n\ + PRODID:-//ucs//\n" + ^ gen_events 0 "" events + ^ "END:VCALENDAR\n" -- cgit v1.2.1