aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2020-09-12 00:08:44 +0200
committerAlban Gruin2020-09-12 01:39:15 +0200
commitbfcd4b6c5b3f4d0baaec8ef99e79c4c4adcd7d10 (patch)
treeb9e743a5732711f7404296ee07e5916397baf550
parentd11f5875b52e86fd28b3f1de805d5af4d108d8e5 (diff)
course: avoid crashes for events spanning on a whole day
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
-rw-r--r--src/course.ml16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/course.ml b/src/course.ml
index 0c93075..9f16646 100644
--- a/src/course.ml
+++ b/src/course.ml
@@ -20,7 +20,6 @@ open CalendarLib
module J = Json_encoding
let date_format = "%FT%T"
-let default_date = Calendar.make 1970 1 1 0 0 0
let separator = Str.regexp_string "\r\n\r\n<br />\r\n\r\n"
let group_prefixes = ["MAT-Agreg Interne "; "3EME ANNEE "; "2EME ANNEE ";
@@ -63,16 +62,19 @@ let date =
let encoding =
J.(conv
- (fun _ -> (default_date, default_date, "", "", (), (), ()),
+ (fun _ -> (None, None, "", "", (), (), ()),
((), (), (), (), (), (), (), (), (), ()))
(fun ((start, stop, description, category, (), (), ()),
((), (), (), (), (), (), (), (), (), ())) ->
let location, summary = location_and_summary description category in
- Ics.Event.make start stop summary location)
+ match start, stop with
+ | Some start, Some stop ->
+ Some (Ics.Event.make start stop summary location)
+ | _, _ -> None)
(merge_objs
(obj7
- (req "start" date)
- (req "end" date)
+ (req "start" @@ option date)
+ (req "end" @@ option date)
(req "description" string)
(req "eventCategory" string)
(req "id" unit)
@@ -95,4 +97,6 @@ let decode s =
match s with
| "" -> `O []
| s -> Ezjsonm.from_string s in
- Ics.make @@ J.destruct (J.list encoding) toks
+ J.(destruct (list encoding) toks)
+ |> List.filter_map (fun (event: Ics.Event.t option) -> event)
+ |> Ics.make