X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fregistry%2Fhelm_registry.ml;h=fd0df50136add3246c4e2f1aff7734fad05c0d7f;hb=dcdbb979433a61e2ef2842d96604098728824416;hp=3753232b6a01d1da8f00f2f9a1044d7aebda1d95;hpb=876f16ec4e9080bad4e39bd9c203d6529dcf4f56;p=helm.git diff --git a/helm/software/components/registry/helm_registry.ml b/helm/software/components/registry/helm_registry.ml index 3753232b6..fd0df5013 100644 --- a/helm/software/components/registry/helm_registry.ml +++ b/helm/software/components/registry/helm_registry.ml @@ -133,7 +133,7 @@ let set' ?(replace=false) registry ~key ~value = let unset registry = Hashtbl.remove registry -let env_var_of_key = Str.global_replace dot_rex "__" +let env_var_of_key s = String.uppercase (Str.global_replace dot_rex "_" s) let singleton = function | [] -> @@ -201,7 +201,9 @@ let set_opt registry marshaller ~key ~value = let get_list registry unmarshaller key = try - List.map unmarshaller (get registry key) + let tmp = get registry key in + let rc = List.map unmarshaller tmp in + rc with Key_not_found _ -> [] (* FG *) @@ -209,10 +211,11 @@ let get_pair registry fst_unmarshaller snd_unmarshaller = get_typed registry (pair fst_unmarshaller snd_unmarshaller) let set_list registry marshaller ~key ~value = - Hashtbl.remove registry key; - List.iter - (fun v -> set' ~replace:false registry ~key ~value:(marshaller v)) - value + (* since ocaml hash table are crazy... *) + while Hashtbl.mem registry key do + Hashtbl.remove registry key + done; + List.iter (fun v -> set' registry ~key ~value:(marshaller v)) value type xml_tree = | Cdata of string