diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/reference_tree.ml | 2 | ||||
-rw-r--r-- | src/session.ml | 4 | ||||
-rw-r--r-- | src/util.ml | 13 | ||||
-rw-r--r-- | src/util.mli | 4 |
4 files changed, 16 insertions, 7 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml index 6f1a9c9..8c8e515 100644 --- a/src/reference_tree.ml +++ b/src/reference_tree.ml @@ -155,7 +155,7 @@ let has_illegal_characters name = in the reference tree *) let rec validate_path validators_dir node path = - let show_path p = Printf.sprintf "[%s]" @@ Util.string_of_path (List.rev p) in + let show_path p = Printf.sprintf "[%s]" @@ Util.string_of_list (List.rev p) in let rec aux node path acc = let data = Vytree.data_of_node node in match data.node_type with diff --git a/src/session.ml b/src/session.ml index 86374dd..90ab5c8 100644 --- a/src/session.ml +++ b/src/session.ml @@ -36,12 +36,12 @@ let make world client_app user = { let string_of_op op = match op with | CfgSet (path, value, _) -> - let path_str = Util.string_of_path path in + let path_str = Util.string_of_list path in (match value with | None -> Printf.sprintf "set %s" path_str | Some v -> Printf.sprintf "set %s \"%s\"" path_str v) | CfgDelete (path, value) -> - let path_str = Util.string_of_path path in + let path_str = Util.string_of_list path in (match value with | None -> Printf.sprintf "delete %s" path_str | Some v -> Printf.sprintf "delete %s \"%s\"" path_str v) diff --git a/src/util.ml b/src/util.ml index de85e3e..c4bbd96 100644 --- a/src/util.ml +++ b/src/util.ml @@ -1,5 +1,6 @@ (** The unavoidable module for functions that don't fit anywhere else *) +(** Find a child node in xml-lite *) let find_xml_child name xml = let find_aux e = match e with @@ -10,17 +11,23 @@ let find_xml_child name xml = | Xml.Element (_, _, children) -> Vylist.find find_aux children | Xml.PCData _ -> None -(* Dirty pretty printer *) -let string_of_path path = +(** Convert a list of strings to a string of unquoted, space separated words *) +let string_of_list ss = let rec aux xs acc = match xs with | [] -> acc | x :: xs' -> aux xs' (Printf.sprintf "%s %s" acc x) in - match path with + match ss with | [] -> "" | x :: xs -> Printf.sprintf "%s%s" x (aux xs "") +(** Convert a list of strings to JSON *) +let json_of_list ss = + let ss = List.map (fun x -> `String x) ss in + Yojson.Safe.to_string (`List ss) + +(** Convert a relative path to an absolute path based on the current working directory *) let absolute_path relative_path = FilePath.make_absolute (Sys.getcwd ()) relative_path diff --git a/src/util.mli b/src/util.mli index 68d0094..4c11d9e 100644 --- a/src/util.mli +++ b/src/util.mli @@ -1,6 +1,8 @@ val find_xml_child : string -> Xml.xml -> Xml.xml option -val string_of_path : string list -> string +val string_of_list : string list -> string + +val json_of_list : string list -> string val absolute_path : FilePath.filename -> FilePath.filename |