OCaml HTML5 parser/serialiser based on Python's JustHTML
1(** Registry for HTML5 conformance checkers. *)
2
3type t = (string, Checker.t) Hashtbl.t
4
5let create () = Hashtbl.create 16
6
7let default () =
8 let reg = create () in
9 Hashtbl.replace reg "nesting" Nesting_checker.checker;
10 Hashtbl.replace reg "obsolete" Obsolete_checker.checker;
11 Hashtbl.replace reg "id" Id_checker.checker;
12 Hashtbl.replace reg "required-attrs" Required_attr_checker.checker;
13 Hashtbl.replace reg "form" Form_checker.checker;
14 Hashtbl.replace reg "aria" Aria_checker.checker;
15 Hashtbl.replace reg "url" Url_checker.checker;
16 Hashtbl.replace reg "picture" Picture_checker.checker;
17 Hashtbl.replace reg "dl" Dl_checker.checker;
18 Hashtbl.replace reg "attr-restrictions" Attr_restrictions_checker.checker;
19 Hashtbl.replace reg "base" Base_checker.checker;
20 Hashtbl.replace reg "datetime" Datetime_checker.checker;
21 Hashtbl.replace reg "title" Title_checker.checker;
22 Hashtbl.replace reg "source" Source_checker.checker;
23 Hashtbl.replace reg "label" Label_checker.checker;
24 Hashtbl.replace reg "ruby" Ruby_checker.checker;
25 Hashtbl.replace reg "h1" H1_checker.checker;
26 Hashtbl.replace reg "srcset-sizes" Srcset_sizes_checker.checker;
27 Hashtbl.replace reg "autofocus" Autofocus_checker.checker;
28 Hashtbl.replace reg "option" Option_checker.checker;
29 Hashtbl.replace reg "language" Language_checker.checker;
30 Hashtbl.replace reg "microdata" Microdata_checker.checker;
31 Hashtbl.replace reg "importmap" Importmap_checker.checker;
32 Hashtbl.replace reg "table" Table_checker.checker;
33 Hashtbl.replace reg "mime-type" Mime_type_checker.checker;
34 Hashtbl.replace reg "normalization" Normalization_checker.checker;
35 Hashtbl.replace reg "svg" Svg_checker.checker;
36 Hashtbl.replace reg "xhtml-content" Xhtml_content_checker.checker;
37 Hashtbl.replace reg "lang-detecting" Lang_detecting_checker.checker;
38 Hashtbl.replace reg "unknown-element" Unknown_element_checker.checker;
39 reg
40
41let register registry name checker = Hashtbl.replace registry name checker
42
43let unregister registry name = Hashtbl.remove registry name
44
45let get registry name = Hashtbl.find_opt registry name
46
47let list_names registry =
48 Hashtbl.to_seq_keys registry |> List.of_seq
49
50let all registry =
51 Hashtbl.to_seq_values registry |> List.of_seq