summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config_tree.ml10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/config_tree.ml b/src/config_tree.ml
index 31b6f0f..131eff4 100644
--- a/src/config_tree.ml
+++ b/src/config_tree.ml
@@ -144,7 +144,7 @@ struct
name]
|> S.concat ""
- let render_values values =
+ let render_values ?(valueless=false) values =
let quote_if_needed s =
try
let _ = Pcre.exec ~pat:"[\\s;{}#\\[\\]\"\']" s in
@@ -152,7 +152,7 @@ struct
with Not_found -> s
in
match values with
- | [] -> raise (Failure "Internal error: get_values got an empty list")
+ | [] -> if valueless then ";" else "{ }"
| [v] -> PF.sprintf "%s;" (quote_if_needed v)
| _ as vs -> S.concat "; " (List.map quote_if_needed vs) |> PF.sprintf "[%s];"
@@ -218,11 +218,13 @@ struct
| Other ->
(name, level, render_children_rt level None ordered rt children)
| Leaf ->
- (name, level, render_values data.values)
+ (name, level, render_values ~valueless:rt_data.valueless data.values)
in
let indents = indentation indent level' in
let outer = render_outer indents data outer_name tag in
- PF.sprintf "%s%s %s" indents outer inner
+ (* Do not insert a space before ; for valueless nodes *)
+ if rt_data.valueless then PF.sprintf "%s%s%s" indents outer inner
+ else PF.sprintf "%s%s %s" indents outer inner
and render_children_rt level tag ordered rt = function
| [] -> "{ }"
| children ->