let rec item_verifies_filter f path i =
match f with
Item s -> title_verifies_path s path i.item_title
| State s -> i.item_state = s
| Desc s ->
Str.string_match
(Str.regexp s)
(match i.item_desc with None -> "" | Some s -> s)
0
| Before d ->
let d2 =
match i.item_enddate with
None -> i.item_date
| Some d -> d
in
compare_dates d d2 >= 0
| And (f1, f2) ->
item_verifies_filter f1 path i && item_verifies_filter f2 path i
| Or (f1, f2) ->
item_verifies_filter f1 path i || item_verifies_filter f2 path i
| Not f ->
not (item_verifies_filter f path i)
| _ -> assert false