OCaml HTML5 parser/serialiser based on Python's JustHTML
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at f7c69be4eae5476a0985d55de71f2cc34c8d5361 237 lines 8.6 kB view raw
1open Content_category 2open Content_model 3 4let form = 5 Element_spec.make ~name:"form" 6 ~categories:[Flow; Palpable] 7 ~content_model:(Except (Categories [Flow], [])) 8 ~attrs:[ 9 Attr_spec.make "accept-charset" ~datatype:"string" (); 10 Attr_spec.make "action" ~datatype:"url" (); 11 Attr_spec.make "autocomplete" ~datatype:"autocomplete" (); 12 Attr_spec.make "enctype" ~datatype:"encoding" (); 13 Attr_spec.make "method" ~datatype:"method" (); 14 Attr_spec.make "name" ~datatype:"string" (); 15 Attr_spec.make "novalidate" ~datatype:"boolean" (); 16 Attr_spec.make "target" ~datatype:"target" (); 17 Attr_spec.make "rel" ~datatype:"relationship" (); 18 ] 19 ~prohibited_ancestors:["form"] 20 () 21 22let label = 23 Element_spec.make ~name:"label" 24 ~categories:[Flow; Phrasing; Interactive; Palpable] 25 ~content_model:(Categories [Phrasing]) 26 ~attrs:[ 27 Attr_spec.make "for" ~datatype:"idref" (); 28 ] 29 () 30 31let input = 32 Element_spec.make ~name:"input" 33 ~void:true 34 ~categories:[Flow; Phrasing; Interactive; Palpable] 35 ~content_model:Nothing 36 ~attrs:[ 37 Attr_spec.make "accept" ~datatype:"string" (); 38 Attr_spec.make "alt" ~datatype:"string" (); 39 Attr_spec.make "autocomplete" ~datatype:"autocomplete" (); 40 Attr_spec.make "checked" ~datatype:"boolean" (); 41 Attr_spec.make "dirname" ~datatype:"directionality" (); 42 Attr_spec.make "disabled" ~datatype:"boolean" (); 43 Attr_spec.make "form" ~datatype:"idref" (); 44 Attr_spec.make "formaction" ~datatype:"url" (); 45 Attr_spec.make "formenctype" ~datatype:"encoding" (); 46 Attr_spec.make "formmethod" ~datatype:"method" (); 47 Attr_spec.make "formnovalidate" ~datatype:"boolean" (); 48 Attr_spec.make "formtarget" ~datatype:"target" (); 49 Attr_spec.make "height" ~datatype:"integer" (); 50 Attr_spec.make "list" ~datatype:"idref" (); 51 Attr_spec.make "max" ~datatype:"string" (); 52 Attr_spec.make "maxlength" ~datatype:"integer" (); 53 Attr_spec.make "min" ~datatype:"string" (); 54 Attr_spec.make "minlength" ~datatype:"integer" (); 55 Attr_spec.make "multiple" ~datatype:"boolean" (); 56 Attr_spec.make "name" ~datatype:"string" (); 57 Attr_spec.make "pattern" ~datatype:"string" (); 58 Attr_spec.make "placeholder" ~datatype:"string" (); 59 Attr_spec.make "popovertarget" ~datatype:"string" (); 60 Attr_spec.make "popovertargetaction" ~datatype:"popovertargetaction" (); 61 Attr_spec.make "readonly" ~datatype:"boolean" (); 62 Attr_spec.make "required" ~datatype:"boolean" (); 63 Attr_spec.make "size" ~datatype:"integer" (); 64 Attr_spec.make "src" ~datatype:"url" (); 65 Attr_spec.make "step" ~datatype:"string" (); 66 Attr_spec.make "type" ~enum_values:[ 67 "hidden"; "text"; "search"; "tel"; "url"; "email"; "password"; 68 "date"; "month"; "week"; "time"; "datetime-local"; "number"; 69 "range"; "color"; "checkbox"; "radio"; "file"; "submit"; "image"; 70 "reset"; "button" 71 ] (); 72 Attr_spec.make "value" ~datatype:"string" (); 73 Attr_spec.make "width" ~datatype:"integer" (); 74 ] 75 () 76 77let button = 78 Element_spec.make ~name:"button" 79 ~categories:[Flow; Phrasing; Interactive; Palpable] 80 ~content_model:(Except (Categories [Phrasing], [Interactive])) 81 ~attrs:[ 82 Attr_spec.make "disabled" ~datatype:"boolean" (); 83 Attr_spec.make "form" ~datatype:"idref" (); 84 Attr_spec.make "formaction" ~datatype:"url" (); 85 Attr_spec.make "formenctype" ~datatype:"encoding" (); 86 Attr_spec.make "formmethod" ~datatype:"method" (); 87 Attr_spec.make "formnovalidate" ~datatype:"boolean" (); 88 Attr_spec.make "formtarget" ~datatype:"target" (); 89 Attr_spec.make "name" ~datatype:"string" (); 90 Attr_spec.make "popovertarget" ~datatype:"string" (); 91 Attr_spec.make "popovertargetaction" ~datatype:"popovertargetaction" (); 92 Attr_spec.make "type" ~enum_values:["submit"; "reset"; "button"] (); 93 Attr_spec.make "value" ~datatype:"string" (); 94 ] 95 () 96 97let select = 98 Element_spec.make ~name:"select" 99 ~categories:[Flow; Phrasing; Interactive; Palpable] 100 ~content_model:(Elements ["option"; "optgroup"; "script"; "template"]) 101 ~attrs:[ 102 Attr_spec.make "autocomplete" ~datatype:"autocomplete" (); 103 Attr_spec.make "disabled" ~datatype:"boolean" (); 104 Attr_spec.make "form" ~datatype:"idref" (); 105 Attr_spec.make "multiple" ~datatype:"boolean" (); 106 Attr_spec.make "name" ~datatype:"string" (); 107 Attr_spec.make "required" ~datatype:"boolean" (); 108 Attr_spec.make "size" ~datatype:"integer" (); 109 ] 110 ~implicit_aria_role:"combobox" 111 () 112 113let datalist = 114 Element_spec.make ~name:"datalist" 115 ~categories:[Flow; Phrasing] 116 ~content_model:(Choice [ 117 Categories [Phrasing]; 118 Elements ["option"; "script"; "template"] 119 ]) 120 ~implicit_aria_role:"listbox" 121 () 122 123let optgroup = 124 Element_spec.make ~name:"optgroup" 125 ~categories:[] 126 ~content_model:(Elements ["option"; "script"; "template"]) 127 ~attrs:[ 128 Attr_spec.make "disabled" ~datatype:"boolean" (); 129 Attr_spec.make "label" ~required:true ~datatype:"string" (); 130 ] 131 ~permitted_parents:["select"] 132 ~implicit_aria_role:"group" 133 () 134 135let option = 136 Element_spec.make ~name:"option" 137 ~categories:[] 138 ~content_model:Text 139 ~attrs:[ 140 Attr_spec.make "disabled" ~datatype:"boolean" (); 141 Attr_spec.make "label" ~datatype:"string" (); 142 Attr_spec.make "selected" ~datatype:"boolean" (); 143 Attr_spec.make "value" ~datatype:"string" (); 144 ] 145 ~permitted_parents:["select"; "datalist"; "optgroup"] 146 ~implicit_aria_role:"option" 147 () 148 149let textarea = 150 Element_spec.make ~name:"textarea" 151 ~categories:[Flow; Phrasing; Interactive; Palpable] 152 ~content_model:Text 153 ~attrs:[ 154 Attr_spec.make "autocomplete" ~datatype:"autocomplete" (); 155 Attr_spec.make "cols" ~datatype:"integer" (); 156 Attr_spec.make "dirname" ~datatype:"directionality" (); 157 Attr_spec.make "disabled" ~datatype:"boolean" (); 158 Attr_spec.make "form" ~datatype:"idref" (); 159 Attr_spec.make "maxlength" ~datatype:"integer" (); 160 Attr_spec.make "minlength" ~datatype:"integer" (); 161 Attr_spec.make "name" ~datatype:"string" (); 162 Attr_spec.make "placeholder" ~datatype:"string" (); 163 Attr_spec.make "readonly" ~datatype:"boolean" (); 164 Attr_spec.make "required" ~datatype:"boolean" (); 165 Attr_spec.make "rows" ~datatype:"integer" (); 166 Attr_spec.make "wrap" ~enum_values:["soft"; "hard"] (); 167 ] 168 ~implicit_aria_role:"textbox" 169 () 170 171let output = 172 Element_spec.make ~name:"output" 173 ~categories:[Flow; Phrasing; Palpable] 174 ~content_model:(Categories [Phrasing]) 175 ~attrs:[ 176 Attr_spec.make "for" ~datatype:"idrefs" (); 177 Attr_spec.make "form" ~datatype:"idref" (); 178 Attr_spec.make "name" ~datatype:"string" (); 179 ] 180 ~implicit_aria_role:"status" 181 () 182 183let progress = 184 Element_spec.make ~name:"progress" 185 ~categories:[Flow; Phrasing; Palpable] 186 ~content_model:(Except (Categories [Phrasing], [])) 187 ~attrs:[ 188 Attr_spec.make "value" ~datatype:"float" (); 189 Attr_spec.make "max" ~datatype:"float" (); 190 ] 191 ~prohibited_ancestors:["progress"] 192 () 193 194let meter = 195 Element_spec.make ~name:"meter" 196 ~categories:[Flow; Phrasing; Palpable] 197 ~content_model:(Except (Categories [Phrasing], [])) 198 ~attrs:[ 199 Attr_spec.make "value" ~required:true ~datatype:"float" (); 200 Attr_spec.make "min" ~datatype:"float" (); 201 Attr_spec.make "max" ~datatype:"float" (); 202 Attr_spec.make "low" ~datatype:"float" (); 203 Attr_spec.make "high" ~datatype:"float" (); 204 Attr_spec.make "optimum" ~datatype:"float" (); 205 ] 206 ~prohibited_ancestors:["meter"] 207 () 208 209let fieldset = 210 Element_spec.make ~name:"fieldset" 211 ~categories:[Flow; Palpable] 212 ~content_model:(Sequence [ 213 Optional (Elements ["legend"]); 214 Categories [Flow] 215 ]) 216 ~attrs:[ 217 Attr_spec.make "disabled" ~datatype:"boolean" (); 218 Attr_spec.make "form" ~datatype:"idref" (); 219 Attr_spec.make "name" ~datatype:"string" (); 220 ] 221 ~implicit_aria_role:"group" 222 () 223 224let legend = 225 Element_spec.make ~name:"legend" 226 ~categories:[] 227 ~content_model:(Choice [ 228 Categories [Phrasing]; 229 Categories [Phrasing; Heading] 230 ]) 231 ~permitted_parents:["fieldset"] 232 () 233 234let all = [ 235 form; label; input; button; select; datalist; optgroup; option; 236 textarea; output; progress; meter; fieldset; legend 237]