List.map unmarshaller (get registry key)
with Key_not_found _ -> []
-let get_pair registry unmarshaller key =
+let get_pair registry fst_unmarshaller snd_unmarshaller key =
let v = singleton (get registry key) in
match Str.split spaces_rex v with
- | [fst; snd] -> unmarshaller fst, unmarshaller snd
+ | [fst; snd] -> fst_unmarshaller fst, snd_unmarshaller snd
| _ -> raise (Type_error "not a pair")
let set_list registry marshaller ~key ~value =
(** never fails with Key_not_found, instead return the empty list *)
val get_list: (string -> 'a) -> string -> 'a list
- (** same as get_list, but assumes list length to be 2 *)
-val get_pair: (string -> 'a) -> string -> 'a * 'a
+ (** decode values which are blank separated list of values, of length 2 *)
+val get_pair: (string -> 'a) -> (string -> 'b) -> string -> 'a * 'b
(** {4 Shorthands} *)
<key name="int_list">13</key>
<key name="int_list">17</key>
<key name="int_list">19</key>
- <key name="int_pair">19 23</key>
+ <key name="int_float_pair">19 23.2</key>
</section>
<section name="triciclo">
<section name="foo1">