feat: support EXDATE, DATE+DURATION, and weekly day inference

- Handle DATE+DURATION all-day events by computing end_date from
  duration
- Add PUSH/POP-OMIT-CONTEXT and OMIT/SKIP support for EXDATE in
  daily/weekly rendering
- Adjust UNTIL date when local time of UNTIL timestamp precedes event
  start time
- Default weekly RRULE to event's own weekday when BYDAY list is empty
- Remove EXDATE check from complex-recurrence guard (handled via OMIT
  now)
- Add timedesc_wd_to_ical weekday conversion utility
- Remove verbose EXDATE debug logging
- Fix minor newline in file processing log message
This commit is contained in:
2026-05-17 12:58:08 +02:00
parent 0bd014c1fe
commit e9f4773312
4 changed files with 63 additions and 13 deletions

View File

@@ -18,7 +18,7 @@ let ical2rem ical_files =
let good_rems =
ListLabels.fold_left ~init:[] ical_files ~f:(fun good_rems_acc filename ->
try
Printf.eprintf "\nProcessing file: %s\n" filename;
Printf.eprintf "Processing file: %s\n" filename;
let file_content = read_file filename in
let basename = Filename.remove_extension (Filename.basename filename) in
match Icalendar.parse file_content with