1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5#[repr(u8)]
6pub enum Tag {
7 A,
8 Abbr,
9 Address,
10 Applet,
11 Area,
12 Article,
13 Aside,
14 Audio,
15 B,
16 Base,
17 Basefont,
18 Bdi,
19 Bdo,
20 Bgsound,
21 Big,
22 Blockquote,
23 Body,
24 Br,
25 Button,
26 Canvas,
27 Caption,
28 Center,
29 Cite,
30 Code,
31 Col,
32 Colgroup,
33 Data,
34 Datalist,
35 Dd,
36 Del,
37 Details,
38 Dfn,
39 Dialog,
40 Dir,
41 Div,
42 Dl,
43 Dt,
44 Em,
45 Embed,
46 Fieldset,
47 Figcaption,
48 Figure,
49 Font,
50 Footer,
51 Form,
52 Frame,
53 Frameset,
54 H1,
55 H2,
56 H3,
57 H4,
58 H5,
59 H6,
60 Head,
61 Header,
62 Hgroup,
63 Hr,
64 Html,
65 I,
66 Iframe,
67 Img,
68 Input,
69 Ins,
70 Kbd,
71 Keygen,
72 Label,
73 Legend,
74 Li,
75 Link,
76 Listing,
77 Main,
78 Map,
79 Mark,
80 Marquee,
81 Math,
82 Menu,
83 Meta,
84 Meter,
85 Nav,
86 Nobr,
87 Noembed,
88 Noframes,
89 Noscript,
90 Object,
91 Ol,
92 Optgroup,
93 Option,
94 Output,
95 P,
96 Param,
97 Picture,
98 Plaintext,
99 Pre,
100 Progress,
101 Q,
102 Rb,
103 Rp,
104 Rt,
105 Rtc,
106 Ruby,
107 S,
108 Samp,
109 Script,
110 Search,
111 Section,
112 Select,
113 Slot,
114 Small,
115 Source,
116 Span,
117 Strike,
118 Strong,
119 Style,
120 Sub,
121 Summary,
122 Sup,
123 Svg,
124 Table,
125 Tbody,
126 Td,
127 Template,
128 Textarea,
129 Tfoot,
130 Th,
131 Thead,
132 Time,
133 Title,
134 Tr,
135 Track,
136 Tt,
137 U,
138 Ul,
139 Var,
140 Video,
141 Wbr,
142 Xmp,
143 Other,
145}
146
147impl Tag {
148 pub fn name(self) -> &'static str {
150 match self {
151 Tag::A => "a",
152 Tag::Abbr => "abbr",
153 Tag::Address => "address",
154 Tag::Applet => "applet",
155 Tag::Area => "area",
156 Tag::Article => "article",
157 Tag::Aside => "aside",
158 Tag::Audio => "audio",
159 Tag::B => "b",
160 Tag::Base => "base",
161 Tag::Basefont => "basefont",
162 Tag::Bdi => "bdi",
163 Tag::Bdo => "bdo",
164 Tag::Bgsound => "bgsound",
165 Tag::Big => "big",
166 Tag::Blockquote => "blockquote",
167 Tag::Body => "body",
168 Tag::Br => "br",
169 Tag::Button => "button",
170 Tag::Canvas => "canvas",
171 Tag::Caption => "caption",
172 Tag::Center => "center",
173 Tag::Cite => "cite",
174 Tag::Code => "code",
175 Tag::Col => "col",
176 Tag::Colgroup => "colgroup",
177 Tag::Data => "data",
178 Tag::Datalist => "datalist",
179 Tag::Dd => "dd",
180 Tag::Del => "del",
181 Tag::Details => "details",
182 Tag::Dfn => "dfn",
183 Tag::Dialog => "dialog",
184 Tag::Dir => "dir",
185 Tag::Div => "div",
186 Tag::Dl => "dl",
187 Tag::Dt => "dt",
188 Tag::Em => "em",
189 Tag::Embed => "embed",
190 Tag::Fieldset => "fieldset",
191 Tag::Figcaption => "figcaption",
192 Tag::Figure => "figure",
193 Tag::Font => "font",
194 Tag::Footer => "footer",
195 Tag::Form => "form",
196 Tag::Frame => "frame",
197 Tag::Frameset => "frameset",
198 Tag::H1 => "h1",
199 Tag::H2 => "h2",
200 Tag::H3 => "h3",
201 Tag::H4 => "h4",
202 Tag::H5 => "h5",
203 Tag::H6 => "h6",
204 Tag::Head => "head",
205 Tag::Header => "header",
206 Tag::Hgroup => "hgroup",
207 Tag::Hr => "hr",
208 Tag::Html => "html",
209 Tag::I => "i",
210 Tag::Iframe => "iframe",
211 Tag::Img => "img",
212 Tag::Input => "input",
213 Tag::Ins => "ins",
214 Tag::Kbd => "kbd",
215 Tag::Keygen => "keygen",
216 Tag::Label => "label",
217 Tag::Legend => "legend",
218 Tag::Li => "li",
219 Tag::Link => "link",
220 Tag::Listing => "listing",
221 Tag::Main => "main",
222 Tag::Map => "map",
223 Tag::Mark => "mark",
224 Tag::Marquee => "marquee",
225 Tag::Math => "math",
226 Tag::Menu => "menu",
227 Tag::Meta => "meta",
228 Tag::Meter => "meter",
229 Tag::Nav => "nav",
230 Tag::Nobr => "nobr",
231 Tag::Noembed => "noembed",
232 Tag::Noframes => "noframes",
233 Tag::Noscript => "noscript",
234 Tag::Object => "object",
235 Tag::Ol => "ol",
236 Tag::Optgroup => "optgroup",
237 Tag::Option => "option",
238 Tag::Output => "output",
239 Tag::P => "p",
240 Tag::Param => "param",
241 Tag::Picture => "picture",
242 Tag::Plaintext => "plaintext",
243 Tag::Pre => "pre",
244 Tag::Progress => "progress",
245 Tag::Q => "q",
246 Tag::Rb => "rb",
247 Tag::Rp => "rp",
248 Tag::Rt => "rt",
249 Tag::Rtc => "rtc",
250 Tag::Ruby => "ruby",
251 Tag::S => "s",
252 Tag::Samp => "samp",
253 Tag::Script => "script",
254 Tag::Search => "search",
255 Tag::Section => "section",
256 Tag::Select => "select",
257 Tag::Slot => "slot",
258 Tag::Small => "small",
259 Tag::Source => "source",
260 Tag::Span => "span",
261 Tag::Strike => "strike",
262 Tag::Strong => "strong",
263 Tag::Style => "style",
264 Tag::Sub => "sub",
265 Tag::Summary => "summary",
266 Tag::Sup => "sup",
267 Tag::Svg => "svg",
268 Tag::Table => "table",
269 Tag::Tbody => "tbody",
270 Tag::Td => "td",
271 Tag::Template => "template",
272 Tag::Textarea => "textarea",
273 Tag::Tfoot => "tfoot",
274 Tag::Th => "th",
275 Tag::Thead => "thead",
276 Tag::Time => "time",
277 Tag::Title => "title",
278 Tag::Tr => "tr",
279 Tag::Track => "track",
280 Tag::Tt => "tt",
281 Tag::U => "u",
282 Tag::Ul => "ul",
283 Tag::Var => "var",
284 Tag::Video => "video",
285 Tag::Wbr => "wbr",
286 Tag::Xmp => "xmp",
287 Tag::Other => "",
288 }
289 }
290
291 pub fn from_name(name: &str) -> Tag {
293 match name {
294 "a" => Tag::A,
295 "abbr" => Tag::Abbr,
296 "address" => Tag::Address,
297 "applet" => Tag::Applet,
298 "area" => Tag::Area,
299 "article" => Tag::Article,
300 "aside" => Tag::Aside,
301 "audio" => Tag::Audio,
302 "b" => Tag::B,
303 "base" => Tag::Base,
304 "basefont" => Tag::Basefont,
305 "bdi" => Tag::Bdi,
306 "bdo" => Tag::Bdo,
307 "bgsound" => Tag::Bgsound,
308 "big" => Tag::Big,
309 "blockquote" => Tag::Blockquote,
310 "body" => Tag::Body,
311 "br" => Tag::Br,
312 "button" => Tag::Button,
313 "canvas" => Tag::Canvas,
314 "caption" => Tag::Caption,
315 "center" => Tag::Center,
316 "cite" => Tag::Cite,
317 "code" => Tag::Code,
318 "col" => Tag::Col,
319 "colgroup" => Tag::Colgroup,
320 "data" => Tag::Data,
321 "datalist" => Tag::Datalist,
322 "dd" => Tag::Dd,
323 "del" => Tag::Del,
324 "details" => Tag::Details,
325 "dfn" => Tag::Dfn,
326 "dialog" => Tag::Dialog,
327 "dir" => Tag::Dir,
328 "div" => Tag::Div,
329 "dl" => Tag::Dl,
330 "dt" => Tag::Dt,
331 "em" => Tag::Em,
332 "embed" => Tag::Embed,
333 "fieldset" => Tag::Fieldset,
334 "figcaption" => Tag::Figcaption,
335 "figure" => Tag::Figure,
336 "font" => Tag::Font,
337 "footer" => Tag::Footer,
338 "form" => Tag::Form,
339 "frame" => Tag::Frame,
340 "frameset" => Tag::Frameset,
341 "h1" => Tag::H1,
342 "h2" => Tag::H2,
343 "h3" => Tag::H3,
344 "h4" => Tag::H4,
345 "h5" => Tag::H5,
346 "h6" => Tag::H6,
347 "head" => Tag::Head,
348 "header" => Tag::Header,
349 "hgroup" => Tag::Hgroup,
350 "hr" => Tag::Hr,
351 "html" => Tag::Html,
352 "i" => Tag::I,
353 "iframe" => Tag::Iframe,
354 "img" => Tag::Img,
355 "input" => Tag::Input,
356 "ins" => Tag::Ins,
357 "kbd" => Tag::Kbd,
358 "keygen" => Tag::Keygen,
359 "label" => Tag::Label,
360 "legend" => Tag::Legend,
361 "li" => Tag::Li,
362 "link" => Tag::Link,
363 "listing" => Tag::Listing,
364 "main" => Tag::Main,
365 "map" => Tag::Map,
366 "mark" => Tag::Mark,
367 "marquee" => Tag::Marquee,
368 "math" => Tag::Math,
369 "menu" => Tag::Menu,
370 "meta" => Tag::Meta,
371 "meter" => Tag::Meter,
372 "nav" => Tag::Nav,
373 "nobr" => Tag::Nobr,
374 "noembed" => Tag::Noembed,
375 "noframes" => Tag::Noframes,
376 "noscript" => Tag::Noscript,
377 "object" => Tag::Object,
378 "ol" => Tag::Ol,
379 "optgroup" => Tag::Optgroup,
380 "option" => Tag::Option,
381 "output" => Tag::Output,
382 "p" => Tag::P,
383 "param" => Tag::Param,
384 "picture" => Tag::Picture,
385 "plaintext" => Tag::Plaintext,
386 "pre" => Tag::Pre,
387 "progress" => Tag::Progress,
388 "q" => Tag::Q,
389 "rb" => Tag::Rb,
390 "rp" => Tag::Rp,
391 "rt" => Tag::Rt,
392 "rtc" => Tag::Rtc,
393 "ruby" => Tag::Ruby,
394 "s" => Tag::S,
395 "samp" => Tag::Samp,
396 "script" => Tag::Script,
397 "search" => Tag::Search,
398 "section" => Tag::Section,
399 "select" => Tag::Select,
400 "slot" => Tag::Slot,
401 "small" => Tag::Small,
402 "source" => Tag::Source,
403 "span" => Tag::Span,
404 "strike" => Tag::Strike,
405 "strong" => Tag::Strong,
406 "style" => Tag::Style,
407 "sub" => Tag::Sub,
408 "summary" => Tag::Summary,
409 "sup" => Tag::Sup,
410 "svg" => Tag::Svg,
411 "table" => Tag::Table,
412 "tbody" => Tag::Tbody,
413 "td" => Tag::Td,
414 "template" => Tag::Template,
415 "textarea" => Tag::Textarea,
416 "tfoot" => Tag::Tfoot,
417 "th" => Tag::Th,
418 "thead" => Tag::Thead,
419 "time" => Tag::Time,
420 "title" => Tag::Title,
421 "tr" => Tag::Tr,
422 "track" => Tag::Track,
423 "tt" => Tag::Tt,
424 "u" => Tag::U,
425 "ul" => Tag::Ul,
426 "var" => Tag::Var,
427 "video" => Tag::Video,
428 "wbr" => Tag::Wbr,
429 "xmp" => Tag::Xmp,
430 _ => Tag::Other,
431 }
432 }
433}