aboutsummaryrefslogtreecommitdiff
path: root/src/ics.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/ics.ml')
-rw-r--r--src/ics.ml49
1 files changed, 42 insertions, 7 deletions
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"