Command-line and Emacs Calendar Client
1(** Filter-based searching and querying of calendar events *)
2
3type filter = Event.t -> bool
4
5val summary_contains : string -> filter
6val description_contains : string -> filter
7val location_contains : string -> filter
8val in_collections : Collection.t list -> filter
9val recurring_only : unit -> filter
10val non_recurring_only : unit -> filter
11val with_id : Event.event_id -> filter
12val and_filter : filter list -> filter
13val or_filter : filter list -> filter
14val not_filter : filter -> filter
15
16val query_without_recurrence :
17 fs:Eio.Fs.dir_ty Eio.Path.t ->
18 Calendar_dir.t ->
19 ?filter:filter ->
20 ?comparator:Event.comparator ->
21 ?limit:int ->
22 unit ->
23 (Event.t list, [> `Msg of string ]) result
24(** Find events without expansion of recurring events. Returns Ok with the list
25 of events, or Error with a message. *)
26
27val query :
28 fs:Eio.Fs.dir_ty Eio.Path.t ->
29 Calendar_dir.t ->
30 ?filter:filter ->
31 from:Ptime.t option ->
32 to_:Ptime.t ->
33 ?comparator:Event.comparator ->
34 ?limit:int ->
35 unit ->
36 (Event.t list, [> `Msg of string ]) result
37(** Find events with expansion of recurring events. Returns Ok with the list of
38 events, or Error with a message. *)
39
40(* Test-only helper functions *)
41val matches_filter : Event.t -> filter -> bool
42(** Check if an event matches the given filter *)