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