diff options
author | Daniil Baturin <daniil@baturin.org> | 2015-04-26 17:49:28 +0600 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2015-04-26 17:49:28 +0600 |
commit | de448723e5a9443f5df7f367e70990c58a9a04e3 (patch) | |
tree | acf564a093b9fce649f6d4d4651364084395a176 /src | |
parent | 3891244d49d3c65ef6da6b8644cfb9097b0d51b0 (diff) | |
download | vyconf-de448723e5a9443f5df7f367e70990c58a9a04e3.tar.gz vyconf-de448723e5a9443f5df7f367e70990c58a9a04e3.zip |
Add config tree module.
Diffstat (limited to 'src')
-rw-r--r-- | src/config_tree.ml | 36 | ||||
-rw-r--r-- | src/config_tree.mli | 25 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/config_tree.ml b/src/config_tree.ml new file mode 100644 index 0000000..289cf7e --- /dev/null +++ b/src/config_tree.ml @@ -0,0 +1,36 @@ +exception Duplicate_value + +type config_node_data = { + values: string list; + comment: string; + node_type: Vytree.node_type; +} + +type t = config_node_data Vytree.t + +let default_data = { + values = []; + comment = ""; + node_type = Vytree.Other; +} + +let make = Vytree.make default_data + +let set_value node path value = + let data = { default_data with values=[value] } in + Vytree.update node path data + +let add_value node path value = + let node' = Vytree.get node path in + let data = Vytree.data_of_node node' in + let values = data.values in + match (Vylist.find (fun x -> x = value) values) with + | Some _ -> raise Duplicate_value + | None -> + let values = values @ [value] in + Vytree.update node path ({data with values=values}) + +let get_values node path = + let node' = Vytree.get node path in + let data = Vytree.data_of_node node' in + data.values diff --git a/src/config_tree.mli b/src/config_tree.mli new file mode 100644 index 0000000..93a8b76 --- /dev/null +++ b/src/config_tree.mli @@ -0,0 +1,25 @@ +exception Duplicate_value + +type config_node_data = { + values : string list; + comment : string; + node_type : Vytree.node_type; +} + +type t = config_node_data Vytree.t + +val default_data : config_node_data + +val make : string -> config_node_data Vytree.t + +val set_value : + config_node_data Vytree.t -> + string list -> string -> config_node_data Vytree.t + +val add_value : + config_node_data Vytree.t -> + string list -> string -> config_node_data Vytree.t + +val get_values : + config_node_data Vytree.t -> + string list -> string list |