diff options
| author | Shon Feder <abathologist@gmail.com> | 2017-01-17 03:31:28 -0500 |
|---|---|---|
| committer | Daniil Baturin <daniil@baturin.org> | 2017-01-17 15:31:28 +0700 |
| commit | 27a2d5ad1afb7baac317672620ff138f9802ccbf (patch) | |
| tree | f5aa5c1677a6a23b65d213de8cfd35a7b268aa08 /src/reference_tree.ml | |
| parent | ee79ba2a593e45ff942554440bb8859ee3228a4b (diff) | |
| download | vyconf-27a2d5ad1afb7baac317672620ff138f9802ccbf.tar.gz vyconf-27a2d5ad1afb7baac317672620ff138f9802ccbf.zip | |
T231: Add a function for loading interface definitions from a directory (#5)
* T231: Load directory of interface definitions
* T231: Add ounit package to merlin config
* T231: Add tests for loading dir of definitions
* squash! T231: Load directory of interface definitions
* squash! T231: Add tests for loading dir of definitions
Diffstat (limited to 'src/reference_tree.ml')
| -rw-r--r-- | src/reference_tree.ml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml index 26b14b9..6f1a9c9 100644 --- a/src/reference_tree.ml +++ b/src/reference_tree.ml @@ -34,6 +34,8 @@ let default_data = { secret = false; } +let default = Vytree.make default_data "root" + (* Loading from XML *) let node_type_of_string s = @@ -120,6 +122,17 @@ let load_from_xml reftree file = | Xml.File_not_found msg -> raise (Bad_interface_definition msg) | Xml.Error e -> raise (Bad_interface_definition (Xml.error e)) +let load_interface_definitions dir = + let relative_paths = FileUtil.ls dir in + let absolute_paths = + try Ok (List.map Util.absolute_path relative_paths) + with Sys_error no_dir_msg -> Error no_dir_msg + in + try match absolute_paths with + | Ok paths -> Ok (List.fold_left load_from_xml default paths) + | Error msg -> Error msg + with Bad_interface_definition msg -> Error msg + (* Validation function *) let has_illegal_characters name = |
