diff options
author | Daniil Baturin <daniil@baturin.org> | 2015-09-21 05:49:09 +0600 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2015-09-21 05:49:09 +0600 |
commit | 43e6af32a84af4f85bd536990d0afa430eaf8311 (patch) | |
tree | e8b504ab69a715ef78319a2e308fad8ed6522350 | |
parent | 639f7885aa6c5d1467cd8ceae6f8b00bcecd4613 (diff) | |
download | vyconf-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.ml | 9 |
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 |