diff options
author | Daniil Baturin <daniil@baturin.org> | 2015-04-26 22:03:06 +0600 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2015-04-26 22:03:06 +0600 |
commit | 88652c2a4675afe9b83b3e9a175e2c39302de040 (patch) | |
tree | 488c83ff20513ac88049617885e7bd7f657cede0 /src/reference_tree.ml | |
parent | de448723e5a9443f5df7f367e70990c58a9a04e3 (diff) | |
download | vyconf-88652c2a4675afe9b83b3e9a175e2c39302de040.tar.gz vyconf-88652c2a4675afe9b83b3e9a175e2c39302de040.zip |
Add an option to keep child order, will be used for rendering.
Diffstat (limited to 'src/reference_tree.ml')
-rw-r--r-- | src/reference_tree.ml | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml index 4cd124a..f7a2ffb 100644 --- a/src/reference_tree.ml +++ b/src/reference_tree.ml @@ -7,6 +7,7 @@ type ref_node_data = { multi: bool; valueless: bool; owner: string option; + keep_order: bool; } type t = ref_node_data Vytree.t @@ -24,6 +25,7 @@ let default_data = { multi = false; valueless = false; owner = None; + keep_order = false; } (* Loading from XML *) @@ -66,6 +68,14 @@ let data_from_xml d x = | _ -> raise (Bad_interface_definition "Malformed property tag") in Xml.fold aux d x +let get_keep_child_order xml = + match xml with + | Xml.Element ("tagNode", _, _) -> + (match (Util.find_xml_child "keepChildOrder" xml) with + | Some _ -> true + | None -> false) + | _ -> false + let rec insert_from_xml basepath reftree xml = match xml with | Xml.Element (tag, _, _) -> @@ -79,7 +89,8 @@ let rec insert_from_xml basepath reftree xml = let node_owner = try let o = Xml.attrib xml "owner" in Some o with _ -> None in - let data = {data with node_type = node_type; owner = node_owner} in + let keep_order = get_keep_child_order xml in + let data = {data with node_type = node_type; owner = node_owner; keep_order = keep_order} in let name = Xml.attrib xml "name" in let path = basepath @ [name] in let new_tree = Vytree.insert reftree path data in |