diff options
| author | Alban Gruin | 2020-09-12 14:00:54 +0200 | 
|---|---|---|
| committer | Alban Gruin | 2020-09-12 14:00:54 +0200 | 
| commit | 31fa3ca1b6511b912beea7cd658ffe5a31048a6b (patch) | |
| tree | 6b9bafdad331c5ed95905510a133f5ad9b95592b | |
| parent | 216d0af10e49bd74a66aaad34475c5ef525e09b7 (diff) | |
course: use Astring to split strings and to check for prefixes
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
| -rw-r--r-- | src/course.ml | 25 | ||||
| -rw-r--r-- | src/dune | 3 | 
2 files changed, 10 insertions, 18 deletions
| 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<br />\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<br />\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)) @@ -1,6 +1,7 @@  (executable   (name ucs) - (libraries calendar + (libraries astring +            calendar              lwt.unix              cohttp-lwt-unix              ezjsonm | 
