OCaml HTML5 parser/serialiser based on Python's JustHTML
1(** Parser for validator/tests/messages.json *)
2
3type t = (string, string) Hashtbl.t
4(** Maps test file path to expected error message *)
5
6let json_string = function
7 | Jsont.String (s, _) -> s
8 | _ -> failwith "Expected string"
9
10let json_object = function
11 | Jsont.Object (obj, _) -> obj
12 | _ -> failwith "Expected object"
13
14let load path =
15 let messages = Hashtbl.create 4096 in
16 let ic = open_in path in
17 let content = really_input_string ic (in_channel_length ic) in
18 close_in ic;
19
20 (* Parse JSON *)
21 let json = match Jsont_bytesrw.decode_string Jsont.json content with
22 | Ok j -> j
23 | Error e -> failwith (Printf.sprintf "JSON parse error: %s" e)
24 in
25 let obj = json_object json in
26 List.iter (fun ((key, _), value) ->
27 let msg = json_string value in
28 Hashtbl.replace messages key msg
29 ) obj;
30 messages
31
32let get messages path =
33 Hashtbl.find_opt messages path
34
35let count messages =
36 Hashtbl.length messages