# # # patch "monotone.ml" # from [07cf2f805ca932b3a36b66c26d680f4546f8bfe0] # to [a6b9adef2eec7299cb99506809c5d8025edafbe7] # # patch "viz_misc.ml" # from [6fd0c3f159b19117f0baf4570c3cec8b0a24aedc] # to [c0708bf649892dfa41344e195aa1698a8e3f9d9a] # # patch "viz_misc.mli" # from [0cfad473122dc2494c4886ebf8ec3d362ef7ea5a] # to [6bf31ab3f93e482daf9cfd055d89aaebe571baa4] # # patch "viz_style.ml" # from [bd751840abc01136015889936c762dcc07a6200f] # to [ffc50f7030fd216bdf9de1fc1dcc3cfba295e98a] # ============================================================ --- monotone.ml 07cf2f805ca932b3a36b66c26d680f4546f8bfe0 +++ monotone.ml a6b9adef2eec7299cb99506809c5d8025edafbe7 @@ -71,10 +71,13 @@ let get_certs_and_revision mtn id = certs mtn id +> _get_revision mtn id -let cert_value mtn id name = - raw_certs mtn id - +> List.filter (fun st -> get_elem st "name" = name) - +> List.map (fun st -> get_elem st "value") +let cert_value mtn id = + let c = raw_certs mtn id in + fun name -> + Viz_misc.list_filter_map + (fun st -> get_elem st "name" = name) + (fun st -> get_elem st "value") + c let select mtn selector = ============================================================ --- viz_misc.ml 6fd0c3f159b19117f0baf4570c3cec8b0a24aedc +++ viz_misc.ml c0708bf649892dfa41344e195aa1698a8e3f9d9a @@ -57,6 +57,14 @@ let rec list_rassoc v = function | _ :: tl -> list_rassoc v tl | [] -> raise Not_found +let list_filter_map p f l = + List.fold_left + (fun acc e -> + if p e + then f e :: acc + else acc) + [] l + let array_index a v = let rec loop i = if i >= Array.length a ============================================================ --- viz_misc.mli 0cfad473122dc2494c4886ebf8ec3d362ef7ea5a +++ viz_misc.mli 6bf31ab3f93e482daf9cfd055d89aaebe571baa4 @@ -8,6 +8,7 @@ val list_rassoc : 'b -> ('a * 'b) list - val list_uniq : 'a list -> 'a list val list_assoc_all : 'a -> ('a * 'b) list -> 'b list val list_rassoc : 'b -> ('a * 'b) list -> 'a (** @raise Not_found *) +val list_filter_map : ('a -> bool) -> ('a -> 'b) -> 'a list -> 'b list val array_index : 'a array -> 'a -> int (** @raise Not_found *) val some : 'a option -> 'a ============================================================ --- viz_style.ml bd751840abc01136015889936c762dcc07a6200f +++ viz_style.ml ffc50f7030fd216bdf9de1fc1dcc3cfba295e98a @@ -97,7 +97,7 @@ let match_style { autocolor = autocolor_ let autocolor = Autocolor.autocolor autocolor_pref in fun id (default_rect_props, default_txt_props) -> - let get_cert n = Monotone.cert_value mtn id n in + let get_cert = Monotone.cert_value mtn id in let matching_attrs = List.fold_left @@ -152,8 +152,8 @@ let match_style { autocolor = autocolor_ else begin let autocolor_key = match autocolor_pref with - | BY_AUTHOR_HASH -> Monotone.cert_value mtn id "author" - | BY_BRANCH_HASH -> Monotone.cert_value mtn id "branch" + | BY_AUTHOR_HASH -> get_cert "author" + | BY_BRANCH_HASH -> get_cert "branch" | NONE -> [] in `FILL_COLOR_RGBA (autocolor autocolor_key) :: cleanup_rect_props end in