if not (Str.string_match valid_key_rex key 0) then
raise (Malformed_key key)
-let set' registry ~key ~value =
+let set' ?(replace=true) registry ~key ~value =
debug_print (lazy (sprintf "Setting %s = %s" key value));
key_is_valid key;
- Hashtbl.add registry key value
+ if replace then
+ Hashtbl.replace registry key value
+ else
+ Hashtbl.add registry key value
let unset registry = Hashtbl.remove registry
in
List.map strip_blanks (aux [] key)
-let set registry = set' registry
+let set = set'
let has registry key = Hashtbl.mem registry key
| _ -> raise (Type_error "not a pair")
let set_list registry marshaller ~key ~value =
- List.iter (fun v -> set registry ~key ~value:(marshaller v)) value
+ List.iter
+ (fun v -> set ~replace:false registry ~key ~value:(marshaller v))
+ value
type xml_tree =
| Cdata of string
} in
let xml_parser = XmlPushParser.create_parser callbacks in
let backup = backup_registry registry in
- if path = None then Hashtbl.clear registry;
+(* if path = None then Hashtbl.clear registry; *)
try
XmlPushParser.parse xml_parser (`File fname)
with exn ->
let unset = unset default_registry
let save_to = save_to default_registry
let load_from = load_from default_registry
+let clear () = Hashtbl.clear default_registry
let get_string = get_typed string
let get_int = get_typed int