diff options
author | Daniil Baturin <daniil@baturin.org> | 2015-06-03 15:56:48 +0600 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2015-06-03 15:56:48 +0600 |
commit | 8caa65f953642cd8fe12ca6493b25a463093f30b (patch) | |
tree | a8ffe2ee7a871b38c61dc8b9900e5b05c75f629f | |
parent | 74132f616269e0de282354dec602d494455da4dc (diff) | |
download | vyconf-8caa65f953642cd8fe12ca6493b25a463093f30b.tar.gz vyconf-8caa65f953642cd8fe12ca6493b25a463093f30b.zip |
Add get_data function, a shortcut for getting a data of node at specified path.
Mainly for quickly getting data from a reference tree.
-rw-r--r-- | src/vytree.ml | 2 | ||||
-rw-r--r-- | src/vytree.mli | 2 | ||||
-rw-r--r-- | test/vytree_test.ml | 6 |
3 files changed, 10 insertions, 0 deletions
diff --git a/src/vytree.ml b/src/vytree.ml index 93d3d71..b5dcba6 100644 --- a/src/vytree.ml +++ b/src/vytree.ml @@ -97,6 +97,8 @@ let rec get node path = | [name] -> find_or_fail node name | name :: names -> get (find_or_fail node name) names +let get_data node path = data_of_node @@ get node path + let exists node path = try ignore (get node path); true with Nonexistent_path -> false diff --git a/src/vytree.mli b/src/vytree.mli index e912922..6a7eda1 100644 --- a/src/vytree.mli +++ b/src/vytree.mli @@ -31,4 +31,6 @@ val get : 'a t -> string list -> 'a t val get_existent_path : 'a t -> string list -> string list +val get_data : 'a t -> string list -> 'a + val exists : 'a t -> string list -> bool diff --git a/test/vytree_test.ml b/test/vytree_test.ml index 86a6269..5fb51ff 100644 --- a/test/vytree_test.ml +++ b/test/vytree_test.ml @@ -126,6 +126,11 @@ let test_exists_nonexistent test_ctxt = let node = insert node ["foo"; "bar"] () in assert_equal (exists node ["foo"; "bar"; "baz"]) false +let test_get_data test_ctxt = + let node = make 0 "root" in + let node = insert node ["foo"] 1 in + let node = insert node ["foo"; "bar"] 42 in + assert_equal (get_data node ["foo"; "bar"]) 42 let suite = "VyConf tree tests" >::: [ @@ -146,6 +151,7 @@ let suite = "test_get_existent_path" >:: test_get_existent_path; "test_exists_existent" >:: test_exists_existent; "test_exists_nonexistent" >:: test_exists_nonexistent; + "test_get_data" >:: test_get_data; ] let () = |