OCaml HTML5 parser/serialiser based on Python's JustHTML
1type t = (string, Element_spec.t) Hashtbl.t
2
3let create () = Hashtbl.create 128
4
5let register registry spec =
6 let name = Astring.String.Ascii.lowercase spec.Element_spec.name in
7 Hashtbl.replace registry name spec
8
9let get registry name =
10 let name = Astring.String.Ascii.lowercase name in
11 Hashtbl.find_opt registry name
12
13let list_names registry =
14 Hashtbl.to_seq_keys registry
15 |> List.of_seq
16 |> List.sort String.compare
17
18let all registry =
19 Hashtbl.to_seq_values registry
20 |> List.of_seq
21
22let default () =
23 let registry = create () in
24
25 (* Register document structure elements *)
26 List.iter (register registry) Elements_document.all;
27
28 (* Register text-level elements *)
29 List.iter (register registry) Elements_text.all;
30
31 (* Register form elements *)
32 List.iter (register registry) Elements_form.all;
33
34 (* Register embedded content elements *)
35 List.iter (register registry) Elements_embedded.all;
36
37 (* Register table elements *)
38 List.iter (register registry) Elements_table.all;
39
40 (* Register interactive elements *)
41 List.iter (register registry) Elements_interactive.all;
42
43 registry