Command-line and Emacs Calendar Client

fix date events

Ryan Gibb 2ccf4bc1 733aeab8

Changed files
+12 -12
bin
lib
+8 -6
bin/event_args.ml
···
Date.parse_date ~tz:Timedesc.Time_zone.utc start_date `From
in
let date = Ptime.to_date ptime in
-
Ok (Some (`Date date))
+
Ok (Some (Icalendar.Params.singleton Valuetype `Date, `Date date))
| Some start_time -> (
match timezone with
| None ->
···
Date.parse_date_time ~tz:Timedesc.Time_zone.utc ~date:start_date
~time:start_time `From
in
-
Ok (Some (`Datetime (`With_tzid (datetime, (false, tzid)))))
+
Ok (Some (Icalendar.Params.empty, `Datetime (`With_tzid (datetime, (false, tzid)))))
| Some "FLOATING" ->
let* datetime =
Date.parse_date_time ~tz:Timedesc.Time_zone.utc ~date:start_date
~time:start_time `From
in
-
Ok (Some (`Datetime (`Local datetime)))
+
Ok (Some (Icalendar.Params.empty, `Datetime (`Local datetime)))
| Some "UTC" ->
let* datetime =
Date.parse_date_time ~tz:Timedesc.Time_zone.utc ~date:start_date
~time:start_time `From
in
-
Ok (Some (`Datetime (`Utc datetime)))
+
Ok (Some (Icalendar.Params.empty, `Datetime (`Utc datetime)))
| Some tzid ->
let* datetime =
Date.parse_date_time ~tz:Timedesc.Time_zone.utc ~date:start_date
~time:start_time `From
in
-
Ok (Some (`Datetime (`With_tzid (datetime, (false, tzid)))))))
+
Ok (Some (Icalendar.Params.empty, `Datetime (`With_tzid (datetime, (false, tzid)))))))
let parse_end ~end_date ~end_time ~timezone ~end_timezone =
let ( let* ) = Result.bind in
···
let* ptime =
Date.parse_date end_date ~tz:Timedesc.Time_zone.utc `From
in
+
(* DTEND;VALUE=DATE the event ends at the start of the specified date *)
+
let ptime = Date.add_days ptime 1 in
let date = Ptime.to_date ptime in
-
Ok (Some (`Dtend (Icalendar.Params.empty, `Date date)))
+
Ok (Some (`Dtend (Icalendar.Params.singleton Valuetype `Date, `Date date)))
| Some end_time -> (
match (timezone, end_timezone) with
| None, None ->
+2 -4
lib/event.ml
···
Eio.Path.(
fs / calendar_dir_path / (match calendar_name with s -> s) / file_name)
in
-
let dtstart = (Params.empty, start) in
+
let dtstart = start in
let dtend_or_duration = end_ in
let rrule = Option.map (fun r -> (Params.empty, r)) recurrence in
let now = Ptime_clock.now () in
···
let now = Ptime_clock.now () in
let uid = t.event.uid in
let dtstart =
-
match start with None -> t.event.dtstart | Some s -> (Params.empty, s)
+
match start with None -> t.event.dtstart | Some s -> s
in
let dtend_or_duration =
match end_ with None -> t.event.dtend_or_duration | Some _ -> end_
···
match t.event.dtstart with
| _, `Datetime (`With_tzid (_, (_, tzid))) -> Some tzid
| _, `Datetime (`Utc _) -> Some "UTC"
-
| _, `Datetime (`Local _) -> Some "FLOATING"
| _ -> None
let get_end_timezone t =
match t.event.dtend_or_duration with
| Some (`Dtend (_, `Datetime (`With_tzid (_, (_, tzid))))) -> Some tzid
| Some (`Dtend (_, `Datetime (`Utc _))) -> Some "UTC"
-
| Some (`Dtend (_, `Datetime (`Local _))) -> Some "FLOATING"
| _ -> None
let get_duration t =
+2 -2
lib/event.mli
···
fs:Eio.Fs.dir_ty Eio.Path.t ->
calendar_dir_path:string ->
summary:string ->
-
start:Icalendar.date_or_datetime ->
+
start:Icalendar.params * Icalendar.date_or_datetime ->
?end_:
[ `Duration of Icalendar.params * Ptime.Span.t
| `Dtend of Icalendar.params * Icalendar.date_or_datetime ] ->
···
val edit :
?summary:string ->
-
?start:Icalendar.date_or_datetime ->
+
?start:Icalendar.params * Icalendar.date_or_datetime ->
?end_:
[ `Duration of Icalendar.params * Ptime.Span.t
| `Dtend of Icalendar.params * Icalendar.date_or_datetime ] ->