summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2015-09-21 05:49:09 +0600
committerDaniil Baturin <daniil@baturin.org>2015-09-21 05:49:09 +0600
commit43e6af32a84af4f85bd536990d0afa430eaf8311 (patch)
treee8b504ab69a715ef78319a2e308fad8ed6522350
parent639f7885aa6c5d1467cd8ceae6f8b00bcecd4613 (diff)
downloadvyconf-43e6af32a84af4f85bd536990d0afa430eaf8311.tar.gz
vyconf-43e6af32a84af4f85bd536990d0afa430eaf8311.zip
Add multilevel insert that uses default data.
That was not so much of a bad idea after all.
-rw-r--r--src/vytree.ml9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/vytree.ml b/src/vytree.ml
index 0222cfc..cd44600 100644
--- a/src/vytree.ml
+++ b/src/vytree.ml
@@ -77,11 +77,18 @@ let rec insert ?(position=Default) node path data =
let next_child = find node name in
match next_child with
| Some next_child' ->
- let new_node = insert next_child' names data in
+ let new_node = insert ~position:position next_child' names data in
replace node new_node
| None ->
raise (Insert_error "Path does not exist")
+let rec insert_multi_level default_data node path data =
+ match path with
+ | [] | [_] -> insert node path data
+ | name :: names ->
+ let node = insert node [name] default_data in
+ insert_multi_level default_data node names data
+
let delete node path =
do_with_child delete_immediate node path