diff --git a/lib/util.ml b/lib/util.ml index eed1ff0..8dec1a2 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -1,4 +1,5 @@ exception Type_error of string * t +exception Missing_Member of string let typeof = function | `Assoc _ -> "object" @@ -26,6 +27,12 @@ let member name = function | `Assoc obj -> assoc name obj | js -> typerr ("Can't get member '" ^ name ^ "' of non-object type ") js +let assoc_force name obj = try List.assoc name obj with Not_found -> raise (Missing_Member ("There is no member called " ^ name ^ "in the json object")) + +let member_force name = function + | `Assoc obj -> assoc_force name obj + | js -> typerr ("Can't get member '" ^ name ^ "' of non-object type ") js + let rec path l obj = match l with | [] -> Some obj