let filter_group f =
(* prerr_endline (string_of_filter f);*)
let (group_filter, item_filter) = split_filter f in
(*
prerr_endline
(Printf.sprintf "group_filter: %s\nitem_filter: %s"
(match group_filter with None -> "NONE" | Some f -> string_of_filter f)
(match item_filter with None -> "NONE" | Some f -> string_of_filter f)
);
*)
let rec iter path g =
let new_path = concat_paths path g.group_title in
let groups = List.map (iter new_path) g.group_groups in
let groups = match group_filter with
None -> groups
| Some f -> filter_groups f new_path groups
in
let items = match item_filter with
None -> g.group_items
| Some f -> List.filter (item_verifies_filter f new_path) g.group_items
in
{ g with group_groups = groups ; group_items = items ; }
in
iter ""