diff options
-rw-r--r-- | src/course.ml | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/src/course.ml b/src/course.ml index 6109a3e..aede83e 100644 --- a/src/course.ml +++ b/src/course.ml @@ -46,32 +46,42 @@ let replace_entities str = | _ -> None) |> Stringext.replace_all_assoc str +type loc_and_sum = + | Nothing + | Groups + | Location of string + | Summary of string * string + +let loc_and_sum_to_str category = function + | Nothing | Groups -> "", category + | Location location -> location, category + | Summary (location, summary) -> + let summary = match Astring.String.cut ~sep:" - " summary with + | None -> summary + | Some (_, str) -> str in + location, summary ^ " (" ^ category ^ ")" + let check_groups str = let group_affixes = ["L1 "; "L2 "; "L3 "; "L3P "; "M1 "; "M2 "; "DEUST "; "MAG1 "; "1ERE ANNEE "; "2EME ANNEE "; "3EME ANNEE "; "MAT-Agreg Interne "] in - List.fold_left - (fun res affix -> - res || Astring.String.is_prefix ~affix str) false group_affixes + if List.fold_left + (fun res affix -> + res || Astring.String.is_prefix ~affix str) false group_affixes then + Groups + else + Nothing let location_and_summary str category = 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 -> function - | false, _, _ -> check_groups str, "", "" - | true, "", _ -> true, replace_entities str, "" - | true, summary, "" -> true, replace_entities str, summary - | true, location, summary -> true, location, summary) - parts (false, "", "") in - if summary = "" then - location, category - else - let summary = match Astring.String.cut ~sep:" - " summary with - | None -> summary - | Some (_, str) -> str in - location, summary ^ " (" ^ category ^ ")" + List.fold_right (fun str -> function + | Nothing -> check_groups str + | Groups -> Location (replace_entities str) + | Location summary -> Summary (replace_entities str, summary) + | Summary _ as res -> res) + parts Nothing + |> loc_and_sum_to_str category let date = let date_format = "%FT%T" in |