diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config_tree.ml | 19 | ||||
-rw-r--r-- | src/config_tree.mli | 12 |
2 files changed, 29 insertions, 2 deletions
diff --git a/src/config_tree.ml b/src/config_tree.ml index 9fed465..c816d65 100644 --- a/src/config_tree.ml +++ b/src/config_tree.ml @@ -156,7 +156,7 @@ struct let render ?(indent=4) - ?(reftree) + ?(reftree=None) ?(cmp=BatString.numeric_compare) ?(showephemeral=false) ?(showinactive=false) @@ -249,3 +249,20 @@ struct end (* Renderer *) let render = Renderer.render + +let render_at_level + ?(indent=4) + ?(reftree=None) + ?(cmp=BatString.numeric_compare) + ?(showephemeral=false) + ?(showinactive=false) + node + path = + let node = + match path with + | [] -> node + | _ -> Vytree.get node path + in + let children = Vytree.children_of_node node in + let child_configs = List.map (render ~indent:indent ~reftree:reftree ~cmp:cmp ~showephemeral:showephemeral ~showinactive:showinactive) children in + List.fold_left (Printf.sprintf "%s\n%s") "" child_configs diff --git a/src/config_tree.mli b/src/config_tree.mli index f724df1..f72eda9 100644 --- a/src/config_tree.mli +++ b/src/config_tree.mli @@ -56,10 +56,20 @@ val is_ephemeral : t -> string list -> bool *) val render : ?indent:int -> - ?reftree:Reference_tree.t -> + ?reftree:(Reference_tree.t option)-> ?cmp:(string -> string -> int) -> ?showephemeral:bool -> ?showinactive:bool -> t -> string +val render_at_level : + ?indent:int -> + ?reftree:(Reference_tree.t option)-> + ?cmp:(string -> string -> int) -> + ?showephemeral:bool -> + ?showinactive:bool -> + t -> + string list -> + string + |