From 31fa3ca1b6511b912beea7cd658ffe5a31048a6b Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Sat, 12 Sep 2020 14:00:54 +0200 Subject: course: use Astring to split strings and to check for prefixes Signed-off-by: Alban Gruin --- src/course.ml | 25 ++++++++----------------- src/dune | 3 ++- 2 files changed, 10 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/course.ml b/src/course.ml index df5a27a..6534691 100644 --- a/src/course.ml +++ b/src/course.ml @@ -19,27 +19,17 @@ open CalendarLib module J = Json_encoding -let date_format = "%FT%T" - -let separator = Str.regexp_string "\r\n\r\n
\r\n\r\n" -let group_prefixes = ["MAT-Agreg Interne "; "3EME ANNEE "; "2EME ANNEE "; - "1ERE ANNEE "; "MAG1 "; "DEUST "; "M2 "; "M1 "; "L3P "; - "L3 "; "L2 "; "L1 "] - -let startswith str prefix = - String.( - let lstr = length str and - lprefix = length prefix in - lstr = lprefix && equal str prefix - || lstr > lprefix && equal (sub str 0 lprefix) prefix) - let check_groups str = + let group_affixes = ["MAT-Agreg Interne "; "3EME ANNEE "; "2EME ANNEE "; + "1ERE ANNEE "; "MAG1 "; "DEUST "; "M2 "; "M1 "; "L3P "; + "L3 "; "L2 "; "L1 "] in List.fold_left - (fun res prefix -> - res || startswith str prefix) false group_prefixes + (fun res affix -> + res || Astring.String.is_prefix ~affix str) false group_affixes let location_and_summary str category = - let parts = Str.split separator str in + let sep = "\r\n\r\n
\r\n\r\n" in + let parts = Astring.String.cuts ~empty:false ~sep str in let _, location, summary = List.fold_right (fun str (has_groups, location, summary) -> @@ -57,6 +47,7 @@ let location_and_summary str category = location, summary ^ " (" ^ category ^ ")" let date = + let date_format = "%FT%T" in Printer.Calendar.( J.(conv (sprint date_format) (from_fstring date_format) string)) diff --git a/src/dune b/src/dune index e87f710..1a1135a 100644 --- a/src/dune +++ b/src/dune @@ -1,6 +1,7 @@ (executable (name ucs) - (libraries calendar + (libraries astring + calendar lwt.unix cohttp-lwt-unix ezjsonm -- cgit v1.2.1