- Change predicate return type from `bool` to `features list option` to carry extracted event data (Summary, Day_start, Multi_day) alongside match results - Add `features` type with Generic_feature_presence, Summary, Day_start, Multi_day variants - Add P00 (has_summary) and P11 (override_events) predicates - Remove large commented-out icalendar/ptime type definitions - Refactor main.ml to group events by UID using a Map - Add get_y_m_d_from_timedesc helper to Utils
22 lines
799 B
OCaml
22 lines
799 B
OCaml
let default_implementation = Remind.make_default_event "TODO: implement conversion"
|
|
|
|
let remind_of_event (ev : Icalendar.event) : Remind.event =
|
|
let found =
|
|
ListLabels.fold_left ~init:[] EventPredicates.all_predicates ~f:(fun acc (pred, desc) ->
|
|
match pred ev with
|
|
| Some feats -> (desc, feats) :: acc
|
|
| None -> acc)
|
|
|> List.rev
|
|
in
|
|
if List.length found > 0
|
|
then begin
|
|
Printf.printf " \u{f04d3} \u{21d2} matches these predicates:\n";
|
|
ListLabels.iter
|
|
~f:(fun (desc, features) ->
|
|
Printf.printf " - %s\n" (EventPredicates.show_event_description desc);
|
|
ListLabels.iter ~f:(fun feat -> Printf.printf " - %s\n" (EventPredicates.show_features feat)) features)
|
|
found;
|
|
Printf.printf "\n"
|
|
end;
|
|
default_implementation
|