diff options
author | Alban Gruin | 2020-09-11 23:39:47 +0200 |
---|---|---|
committer | Alban Gruin | 2020-09-11 23:39:47 +0200 |
commit | 3dc6cc287227bdfc218e79ea4753b601689eff2a (patch) | |
tree | a46ed8f09d8c4145cf327099d5325bc56d174b51 /src/ics.ml | |
parent | dd909afda419f39f16120fbfe0e60d847f6f3e2d (diff) |
ics: clean Event module, conversion to string
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
Diffstat (limited to 'src/ics.ml')
-rw-r--r-- | src/ics.ml | 49 |
1 files changed, 42 insertions, 7 deletions
@@ -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" |