aria_query/
types.rs

1use std::{
2    collections::HashMap,
3    fmt::{Display, Formatter},
4    str::FromStr,
5};
6
7#[derive(Debug, PartialEq, Eq)]
8pub struct UnknownRoleError;
9
10#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
11pub enum AriaAbstractRole {
12    Command,
13    Composite,
14    Input,
15    Landmark,
16    Range,
17    Roletype,
18    Section,
19    Sectionhead,
20    Select,
21    Structure,
22    Widget,
23    Window,
24}
25
26impl FromStr for AriaAbstractRole {
27    type Err = UnknownRoleError;
28
29    fn from_str(s: &str) -> Result<Self, Self::Err> {
30        match s {
31            "command" => Ok(AriaAbstractRole::Command),
32            "composite" => Ok(AriaAbstractRole::Composite),
33            "input" => Ok(AriaAbstractRole::Input),
34            "landmark" => Ok(AriaAbstractRole::Landmark),
35            "range" => Ok(AriaAbstractRole::Range),
36            "roletype" => Ok(AriaAbstractRole::Roletype),
37            "section" => Ok(AriaAbstractRole::Section),
38            "sectionhead" => Ok(AriaAbstractRole::Sectionhead),
39            "select" => Ok(AriaAbstractRole::Select),
40            "structure" => Ok(AriaAbstractRole::Structure),
41            "widget" => Ok(AriaAbstractRole::Widget),
42            "window" => Ok(AriaAbstractRole::Window),
43            _ => Err(UnknownRoleError),
44        }
45    }
46}
47
48impl Display for AriaAbstractRole {
49    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
50        write!(
51            f,
52            "{}",
53            match self {
54                AriaAbstractRole::Command => "command",
55                AriaAbstractRole::Composite => "composite",
56                AriaAbstractRole::Input => "input",
57                AriaAbstractRole::Landmark => "landmark",
58                AriaAbstractRole::Range => "range",
59                AriaAbstractRole::Roletype => "roletype",
60                AriaAbstractRole::Section => "section",
61                AriaAbstractRole::Sectionhead => "sectionhead",
62                AriaAbstractRole::Select => "select",
63                AriaAbstractRole::Structure => "structure",
64                AriaAbstractRole::Widget => "widget",
65                AriaAbstractRole::Window => "window",
66            }
67        )
68    }
69}
70
71#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
72pub enum AriaWidgetRole {
73    Button,
74    Checkbox,
75    Gridcell,
76    Link,
77    Menuitem,
78    Menuitemcheckbox,
79    Menuitemradio,
80    Option,
81    Progressbar,
82    Radio,
83    Scrollbar,
84    Searchbox,
85    Slider,
86    Spinbutton,
87    Switch,
88    Tab,
89    Tabpanel,
90    Textbox,
91    Treeitem,
92}
93
94impl FromStr for AriaWidgetRole {
95    type Err = UnknownRoleError;
96
97    fn from_str(s: &str) -> Result<Self, Self::Err> {
98        match s {
99            "button" => Ok(AriaWidgetRole::Button),
100            "checkbox" => Ok(AriaWidgetRole::Checkbox),
101            "gridcell" => Ok(AriaWidgetRole::Gridcell),
102            "link" => Ok(AriaWidgetRole::Link),
103            "menuitem" => Ok(AriaWidgetRole::Menuitem),
104            "menuitemcheckbox" => Ok(AriaWidgetRole::Menuitemcheckbox),
105            "menuitemradio" => Ok(AriaWidgetRole::Menuitemradio),
106            "option" => Ok(AriaWidgetRole::Option),
107            "progressbar" => Ok(AriaWidgetRole::Progressbar),
108            "radio" => Ok(AriaWidgetRole::Radio),
109            "scrollbar" => Ok(AriaWidgetRole::Scrollbar),
110            "searchbox" => Ok(AriaWidgetRole::Searchbox),
111            "slider" => Ok(AriaWidgetRole::Slider),
112            "spinbutton" => Ok(AriaWidgetRole::Spinbutton),
113            "switch" => Ok(AriaWidgetRole::Switch),
114            "tab" => Ok(AriaWidgetRole::Tab),
115            "tabpanel" => Ok(AriaWidgetRole::Tabpanel),
116            "textbox" => Ok(AriaWidgetRole::Textbox),
117            "treeitem" => Ok(AriaWidgetRole::Treeitem),
118            _ => Err(UnknownRoleError),
119        }
120    }
121}
122
123impl Display for AriaWidgetRole {
124    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
125        write!(
126            f,
127            "{}",
128            match self {
129                AriaWidgetRole::Button => "button",
130                AriaWidgetRole::Checkbox => "checkbox",
131                AriaWidgetRole::Gridcell => "gridcell",
132                AriaWidgetRole::Link => "link",
133                AriaWidgetRole::Menuitem => "menuitem",
134                AriaWidgetRole::Menuitemcheckbox => "menuitemcheckbox",
135                AriaWidgetRole::Menuitemradio => "menuitemradio",
136                AriaWidgetRole::Option => "option",
137                AriaWidgetRole::Progressbar => "progressbar",
138                AriaWidgetRole::Radio => "radio",
139                AriaWidgetRole::Scrollbar => "scrollbar",
140                AriaWidgetRole::Searchbox => "searchbox",
141                AriaWidgetRole::Slider => "slider",
142                AriaWidgetRole::Spinbutton => "spinbutton",
143                AriaWidgetRole::Switch => "switch",
144                AriaWidgetRole::Tab => "tab",
145                AriaWidgetRole::Tabpanel => "tabpanel",
146                AriaWidgetRole::Textbox => "textbox",
147                AriaWidgetRole::Treeitem => "treeitem",
148            }
149        )
150    }
151}
152
153#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
154pub enum AriaCompositeWidgetRole {
155    Combobox,
156    Grid,
157    Listbox,
158    Menu,
159    Menubar,
160    Radiogroup,
161    Tablist,
162    Tree,
163    Treegrid,
164}
165
166impl FromStr for AriaCompositeWidgetRole {
167    type Err = UnknownRoleError;
168
169    fn from_str(s: &str) -> Result<Self, Self::Err> {
170        match s {
171            "combobox" => Ok(AriaCompositeWidgetRole::Combobox),
172            "grid" => Ok(AriaCompositeWidgetRole::Grid),
173            "listbox" => Ok(AriaCompositeWidgetRole::Listbox),
174            "menu" => Ok(AriaCompositeWidgetRole::Menu),
175            "menubar" => Ok(AriaCompositeWidgetRole::Menubar),
176            "radiogroup" => Ok(AriaCompositeWidgetRole::Radiogroup),
177            "tablist" => Ok(AriaCompositeWidgetRole::Tablist),
178            "tree" => Ok(AriaCompositeWidgetRole::Tree),
179            "treegrid" => Ok(AriaCompositeWidgetRole::Treegrid),
180            _ => Err(UnknownRoleError),
181        }
182    }
183}
184
185impl Display for AriaCompositeWidgetRole {
186    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
187        write!(
188            f,
189            "{}",
190            match self {
191                AriaCompositeWidgetRole::Combobox => "combobox",
192                AriaCompositeWidgetRole::Grid => "grid",
193                AriaCompositeWidgetRole::Listbox => "listbox",
194                AriaCompositeWidgetRole::Menu => "menu",
195                AriaCompositeWidgetRole::Menubar => "menubar",
196                AriaCompositeWidgetRole::Radiogroup => "radiogroup",
197                AriaCompositeWidgetRole::Tablist => "tablist",
198                AriaCompositeWidgetRole::Tree => "tree",
199                AriaCompositeWidgetRole::Treegrid => "treegrid",
200            }
201        )
202    }
203}
204
205#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
206pub enum AriaDocumentStructureRole {
207    Application,
208    Article,
209    Blockquote,
210    Caption,
211    Cell,
212    Columnheader,
213    Definition,
214    Deletion,
215    Directory,
216    Document,
217    Emphasis,
218    Feed,
219    Figure,
220    Generic,
221    Group,
222    Heading,
223    Img,
224    Insertion,
225    List,
226    Listitem,
227    Mark,
228    Math,
229    Meter,
230    None,
231    Note,
232    Paragraph,
233    Presentation,
234    Row,
235    Rowgroup,
236    Rowheader,
237    Separator,
238    Strong,
239    Subscript,
240    Superscript,
241    Table,
242    Term,
243    Time,
244    Toolbar,
245    Tooltip,
246}
247
248impl FromStr for AriaDocumentStructureRole {
249    type Err = UnknownRoleError;
250
251    fn from_str(s: &str) -> Result<Self, Self::Err> {
252        match s {
253            "application" => Ok(AriaDocumentStructureRole::Application),
254            "article" => Ok(AriaDocumentStructureRole::Article),
255            "blockquote" => Ok(AriaDocumentStructureRole::Blockquote),
256            "caption" => Ok(AriaDocumentStructureRole::Caption),
257            "cell" => Ok(AriaDocumentStructureRole::Cell),
258            "columnheader" => Ok(AriaDocumentStructureRole::Columnheader),
259            "definition" => Ok(AriaDocumentStructureRole::Definition),
260            "deletion" => Ok(AriaDocumentStructureRole::Deletion),
261            "directory" => Ok(AriaDocumentStructureRole::Directory),
262            "document" => Ok(AriaDocumentStructureRole::Document),
263            "emphasis" => Ok(AriaDocumentStructureRole::Emphasis),
264            "feed" => Ok(AriaDocumentStructureRole::Feed),
265            "figure" => Ok(AriaDocumentStructureRole::Figure),
266            "generic" => Ok(AriaDocumentStructureRole::Generic),
267            "group" => Ok(AriaDocumentStructureRole::Group),
268            "heading" => Ok(AriaDocumentStructureRole::Heading),
269            "img" => Ok(AriaDocumentStructureRole::Img),
270            "insertion" => Ok(AriaDocumentStructureRole::Insertion),
271            "list" => Ok(AriaDocumentStructureRole::List),
272            "listitem" => Ok(AriaDocumentStructureRole::Listitem),
273            "mark" => Ok(AriaDocumentStructureRole::Mark),
274            "math" => Ok(AriaDocumentStructureRole::Math),
275            "meter" => Ok(AriaDocumentStructureRole::Meter),
276            "none" => Ok(AriaDocumentStructureRole::None),
277            "note" => Ok(AriaDocumentStructureRole::Note),
278            "paragraph" => Ok(AriaDocumentStructureRole::Paragraph),
279            "presentation" => Ok(AriaDocumentStructureRole::Presentation),
280            "row" => Ok(AriaDocumentStructureRole::Row),
281            "rowgroup" => Ok(AriaDocumentStructureRole::Rowgroup),
282            "rowheader" => Ok(AriaDocumentStructureRole::Rowheader),
283            "separator" => Ok(AriaDocumentStructureRole::Separator),
284            "strong" => Ok(AriaDocumentStructureRole::Strong),
285            "subscript" => Ok(AriaDocumentStructureRole::Subscript),
286            "superscript" => Ok(AriaDocumentStructureRole::Superscript),
287            "table" => Ok(AriaDocumentStructureRole::Table),
288            "term" => Ok(AriaDocumentStructureRole::Term),
289            "time" => Ok(AriaDocumentStructureRole::Time),
290            "toolbar" => Ok(AriaDocumentStructureRole::Toolbar),
291            "tooltip" => Ok(AriaDocumentStructureRole::Tooltip),
292            _ => Err(UnknownRoleError),
293        }
294    }
295}
296
297impl Display for AriaDocumentStructureRole {
298    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
299        write!(
300            f,
301            "{}",
302            match self {
303                AriaDocumentStructureRole::Application => "application",
304                AriaDocumentStructureRole::Article => "article",
305                AriaDocumentStructureRole::Blockquote => "blockquote",
306                AriaDocumentStructureRole::Caption => "caption",
307                AriaDocumentStructureRole::Cell => "cell",
308                AriaDocumentStructureRole::Columnheader => "columnheader",
309                AriaDocumentStructureRole::Definition => "definition",
310                AriaDocumentStructureRole::Deletion => "deletion",
311                AriaDocumentStructureRole::Directory => "directory",
312                AriaDocumentStructureRole::Document => "document",
313                AriaDocumentStructureRole::Emphasis => "emphasis",
314                AriaDocumentStructureRole::Feed => "feed",
315                AriaDocumentStructureRole::Figure => "figure",
316                AriaDocumentStructureRole::Generic => "generic",
317                AriaDocumentStructureRole::Group => "group",
318                AriaDocumentStructureRole::Heading => "heading",
319                AriaDocumentStructureRole::Img => "img",
320                AriaDocumentStructureRole::Insertion => "insertion",
321                AriaDocumentStructureRole::List => "list",
322                AriaDocumentStructureRole::Listitem => "listitem",
323                AriaDocumentStructureRole::Mark => "mark",
324                AriaDocumentStructureRole::Math => "math",
325                AriaDocumentStructureRole::Meter => "meter",
326                AriaDocumentStructureRole::None => "none",
327                AriaDocumentStructureRole::Note => "note",
328                AriaDocumentStructureRole::Paragraph => "paragraph",
329                AriaDocumentStructureRole::Presentation => "presentation",
330                AriaDocumentStructureRole::Row => "row",
331                AriaDocumentStructureRole::Rowgroup => "rowgroup",
332                AriaDocumentStructureRole::Rowheader => "rowheader",
333                AriaDocumentStructureRole::Separator => "separator",
334                AriaDocumentStructureRole::Strong => "strong",
335                AriaDocumentStructureRole::Subscript => "subscript",
336                AriaDocumentStructureRole::Superscript => "superscript",
337                AriaDocumentStructureRole::Table => "table",
338                AriaDocumentStructureRole::Term => "term",
339                AriaDocumentStructureRole::Time => "time",
340                AriaDocumentStructureRole::Toolbar => "toolbar",
341                AriaDocumentStructureRole::Tooltip => "tooltip",
342            }
343        )
344    }
345}
346
347#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
348pub enum AriaLandmarkRole {
349    Banner,
350    Complementary,
351    Contentinfo,
352    Form,
353    Main,
354    Navigation,
355    Region,
356    Search,
357}
358
359impl FromStr for AriaLandmarkRole {
360    type Err = UnknownRoleError;
361
362    fn from_str(s: &str) -> Result<Self, Self::Err> {
363        match s {
364            "banner" => Ok(AriaLandmarkRole::Banner),
365            "complementary" => Ok(AriaLandmarkRole::Complementary),
366            "contentinfo" => Ok(AriaLandmarkRole::Contentinfo),
367            "form" => Ok(AriaLandmarkRole::Form),
368            "main" => Ok(AriaLandmarkRole::Main),
369            "navigation" => Ok(AriaLandmarkRole::Navigation),
370            "region" => Ok(AriaLandmarkRole::Region),
371            "search" => Ok(AriaLandmarkRole::Search),
372            _ => Err(UnknownRoleError),
373        }
374    }
375}
376
377impl Display for AriaLandmarkRole {
378    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
379        write!(
380            f,
381            "{}",
382            match self {
383                AriaLandmarkRole::Banner => "banner",
384                AriaLandmarkRole::Complementary => "complementary",
385                AriaLandmarkRole::Contentinfo => "contentinfo",
386                AriaLandmarkRole::Form => "form",
387                AriaLandmarkRole::Main => "main",
388                AriaLandmarkRole::Navigation => "navigation",
389                AriaLandmarkRole::Region => "region",
390                AriaLandmarkRole::Search => "search",
391            }
392        )
393    }
394}
395
396#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
397pub enum AriaLiveRegionRole {
398    Alert,
399    Log,
400    Marquee,
401    Status,
402    Timer,
403}
404
405impl FromStr for AriaLiveRegionRole {
406    type Err = UnknownRoleError;
407
408    fn from_str(s: &str) -> Result<Self, Self::Err> {
409        match s {
410            "alert" => Ok(AriaLiveRegionRole::Alert),
411            "log" => Ok(AriaLiveRegionRole::Log),
412            "marquee" => Ok(AriaLiveRegionRole::Marquee),
413            "status" => Ok(AriaLiveRegionRole::Status),
414            "timer" => Ok(AriaLiveRegionRole::Timer),
415            _ => Err(UnknownRoleError),
416        }
417    }
418}
419
420impl Display for AriaLiveRegionRole {
421    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
422        write!(
423            f,
424            "{}",
425            match self {
426                AriaLiveRegionRole::Alert => "alert",
427                AriaLiveRegionRole::Log => "log",
428                AriaLiveRegionRole::Marquee => "marquee",
429                AriaLiveRegionRole::Status => "status",
430                AriaLiveRegionRole::Timer => "timer",
431            }
432        )
433    }
434}
435
436#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
437pub enum AriaWindowRole {
438    Alertdialog,
439    Dialog,
440}
441
442impl FromStr for AriaWindowRole {
443    type Err = UnknownRoleError;
444
445    fn from_str(s: &str) -> Result<Self, Self::Err> {
446        match s {
447            "alertdialog" => Ok(AriaWindowRole::Alertdialog),
448            "dialog" => Ok(AriaWindowRole::Dialog),
449            _ => Err(UnknownRoleError),
450        }
451    }
452}
453
454impl Display for AriaWindowRole {
455    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
456        write!(
457            f,
458            "{}",
459            match self {
460                AriaWindowRole::Alertdialog => "alertdialog",
461                AriaWindowRole::Dialog => "dialog",
462            }
463        )
464    }
465}
466
467#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
468pub enum AriaUncategorizedRole {
469    Code,
470}
471
472impl FromStr for AriaUncategorizedRole {
473    type Err = UnknownRoleError;
474
475    fn from_str(s: &str) -> Result<Self, Self::Err> {
476        match s {
477            "code" => Ok(AriaUncategorizedRole::Code),
478            _ => Err(UnknownRoleError),
479        }
480    }
481}
482
483impl Display for AriaUncategorizedRole {
484    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
485        write!(
486            f,
487            "{}",
488            match self {
489                AriaUncategorizedRole::Code => "code",
490            }
491        )
492    }
493}
494
495#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
496pub enum AriaDpubRole {
497    DocAbstract,
498    DocAcknowledgments,
499    DocAfterword,
500    DocAppendix,
501    DocBacklink,
502    DocBiblioentry,
503    DocBibliography,
504    DocBiblioref,
505    DocChapter,
506    DocColophon,
507    DocConclusion,
508    DocCover,
509    DocCredit,
510    DocCredits,
511    DocDedication,
512    DocEndnote,
513    DocEndnotes,
514    DocEpigraph,
515    DocEpilogue,
516    DocErrata,
517    DocExample,
518    DocFootnote,
519    DocForeword,
520    DocGlossary,
521    DocGlossref,
522    DocIndex,
523    DocIntroduction,
524    DocNoteref,
525    DocNotice,
526    DocPagebreak,
527    DocPageheader,
528    DocPagefooter,
529    DocPagelist,
530    DocPart,
531    DocPreface,
532    DocPrologue,
533    DocPullquote,
534    DocQna,
535    DocSubtitle,
536    DocTip,
537    DocToc,
538}
539
540impl FromStr for AriaDpubRole {
541    type Err = UnknownRoleError;
542
543    fn from_str(s: &str) -> Result<Self, Self::Err> {
544        match s {
545            "doc-abstract" => Ok(AriaDpubRole::DocAbstract),
546            "doc-acknowledgments" => Ok(AriaDpubRole::DocAcknowledgments),
547            "doc-afterword" => Ok(AriaDpubRole::DocAfterword),
548            "doc-appendix" => Ok(AriaDpubRole::DocAppendix),
549            "doc-backlink" => Ok(AriaDpubRole::DocBacklink),
550            "doc-biblioentry" => Ok(AriaDpubRole::DocBiblioentry),
551            "doc-bibliography" => Ok(AriaDpubRole::DocBibliography),
552            "doc-biblioref" => Ok(AriaDpubRole::DocBiblioref),
553            "doc-chapter" => Ok(AriaDpubRole::DocChapter),
554            "doc-colophon" => Ok(AriaDpubRole::DocColophon),
555            "doc-conclusion" => Ok(AriaDpubRole::DocConclusion),
556            "doc-cover" => Ok(AriaDpubRole::DocCover),
557            "doc-credit" => Ok(AriaDpubRole::DocCredit),
558            "doc-credits" => Ok(AriaDpubRole::DocCredits),
559            "doc-dedication" => Ok(AriaDpubRole::DocDedication),
560            "doc-endnote" => Ok(AriaDpubRole::DocEndnote),
561            "doc-endnotes" => Ok(AriaDpubRole::DocEndnotes),
562            "doc-epigraph" => Ok(AriaDpubRole::DocEpigraph),
563            "doc-epilogue" => Ok(AriaDpubRole::DocEpilogue),
564            "doc-errata" => Ok(AriaDpubRole::DocErrata),
565            "doc-example" => Ok(AriaDpubRole::DocExample),
566            "doc-footnote" => Ok(AriaDpubRole::DocFootnote),
567            "doc-foreword" => Ok(AriaDpubRole::DocForeword),
568            "doc-glossary" => Ok(AriaDpubRole::DocGlossary),
569            "doc-glossref" => Ok(AriaDpubRole::DocGlossref),
570            "doc-index" => Ok(AriaDpubRole::DocIndex),
571            "doc-introduction" => Ok(AriaDpubRole::DocIntroduction),
572            "doc-noteref" => Ok(AriaDpubRole::DocNoteref),
573            "doc-notice" => Ok(AriaDpubRole::DocNotice),
574            "doc-pagebreak" => Ok(AriaDpubRole::DocPagebreak),
575            "doc-pageheader" => Ok(AriaDpubRole::DocPageheader),
576            "doc-pagefooter" => Ok(AriaDpubRole::DocPagefooter),
577            "doc-pagelist" => Ok(AriaDpubRole::DocPagelist),
578            "doc-part" => Ok(AriaDpubRole::DocPart),
579            "doc-preface" => Ok(AriaDpubRole::DocPreface),
580            "doc-prologue" => Ok(AriaDpubRole::DocPrologue),
581            "doc-pullquote" => Ok(AriaDpubRole::DocPullquote),
582            "doc-qna" => Ok(AriaDpubRole::DocQna),
583            "doc-subtitle" => Ok(AriaDpubRole::DocSubtitle),
584            "doc-tip" => Ok(AriaDpubRole::DocTip),
585            "doc-toc" => Ok(AriaDpubRole::DocToc),
586            _ => Err(UnknownRoleError),
587        }
588    }
589}
590
591impl Display for AriaDpubRole {
592    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
593        write!(
594            f,
595            "{}",
596            match self {
597                AriaDpubRole::DocAbstract => "doc-abstract",
598                AriaDpubRole::DocAcknowledgments => "doc-acknowledgments",
599                AriaDpubRole::DocAfterword => "doc-afterword",
600                AriaDpubRole::DocAppendix => "doc-appendix",
601                AriaDpubRole::DocBacklink => "doc-backlink",
602                AriaDpubRole::DocBiblioentry => "doc-biblioentry",
603                AriaDpubRole::DocBibliography => "doc-bibliography",
604                AriaDpubRole::DocBiblioref => "doc-biblioref",
605                AriaDpubRole::DocChapter => "doc-chapter",
606                AriaDpubRole::DocColophon => "doc-colophon",
607                AriaDpubRole::DocConclusion => "doc-conclusion",
608                AriaDpubRole::DocCover => "doc-cover",
609                AriaDpubRole::DocCredit => "doc-credit",
610                AriaDpubRole::DocCredits => "doc-credits",
611                AriaDpubRole::DocDedication => "doc-dedication",
612                AriaDpubRole::DocEndnote => "doc-endnote",
613                AriaDpubRole::DocEndnotes => "doc-endnotes",
614                AriaDpubRole::DocEpigraph => "doc-epigraph",
615                AriaDpubRole::DocEpilogue => "doc-epilogue",
616                AriaDpubRole::DocErrata => "doc-errata",
617                AriaDpubRole::DocExample => "doc-example",
618                AriaDpubRole::DocFootnote => "doc-footnote",
619                AriaDpubRole::DocForeword => "doc-foreword",
620                AriaDpubRole::DocGlossary => "doc-glossary",
621                AriaDpubRole::DocGlossref => "doc-glossref",
622                AriaDpubRole::DocIndex => "doc-index",
623                AriaDpubRole::DocIntroduction => "doc-introduction",
624                AriaDpubRole::DocNoteref => "doc-noteref",
625                AriaDpubRole::DocNotice => "doc-notice",
626                AriaDpubRole::DocPagebreak => "doc-pagebreak",
627                AriaDpubRole::DocPageheader => "doc-pageheader",
628                AriaDpubRole::DocPagefooter => "doc-pagefooter",
629                AriaDpubRole::DocPagelist => "doc-pagelist",
630                AriaDpubRole::DocPart => "doc-part",
631                AriaDpubRole::DocPreface => "doc-preface",
632                AriaDpubRole::DocPrologue => "doc-prologue",
633                AriaDpubRole::DocPullquote => "doc-pullquote",
634                AriaDpubRole::DocQna => "doc-qna",
635                AriaDpubRole::DocSubtitle => "doc-subtitle",
636                AriaDpubRole::DocTip => "doc-tip",
637                AriaDpubRole::DocToc => "doc-toc",
638            }
639        )
640    }
641}
642
643#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
644pub enum AriaGraphicsRole {
645    GraphicsDocument,
646    GraphicsObject,
647    GraphicsSymbol,
648}
649
650impl FromStr for AriaGraphicsRole {
651    type Err = UnknownRoleError;
652
653    fn from_str(s: &str) -> Result<Self, Self::Err> {
654        match s {
655            "graphics-document" => Ok(AriaGraphicsRole::GraphicsDocument),
656            "graphics-object" => Ok(AriaGraphicsRole::GraphicsObject),
657            "graphics-symbol" => Ok(AriaGraphicsRole::GraphicsSymbol),
658            _ => Err(UnknownRoleError),
659        }
660    }
661}
662
663impl Display for AriaGraphicsRole {
664    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
665        write!(
666            f,
667            "{}",
668            match self {
669                AriaGraphicsRole::GraphicsDocument => "graphics-document",
670                AriaGraphicsRole::GraphicsObject => "graphics-object",
671                AriaGraphicsRole::GraphicsSymbol => "graphics-symbol",
672            }
673        )
674    }
675}
676
677#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
678pub enum AriaRole {
679    Alert,
680    Alertdialog,
681    Application,
682    Article,
683    Banner,
684    Blockquote,
685    Button,
686    Caption,
687    Cell,
688    Checkbox,
689    Code,
690    Columnheader,
691    Combobox,
692    Complementary,
693    Contentinfo,
694    Definition,
695    Deletion,
696    Dialog,
697    Directory,
698    DocAbstract,
699    DocAcknowledgments,
700    DocAfterword,
701    DocAppendix,
702    DocBacklink,
703    DocBiblioentry,
704    DocBibliography,
705    DocBiblioref,
706    DocChapter,
707    DocColophon,
708    DocConclusion,
709    DocCover,
710    DocCredit,
711    DocCredits,
712    DocDedication,
713    DocEndnote,
714    DocEndnotes,
715    DocEpigraph,
716    DocEpilogue,
717    DocErrata,
718    DocExample,
719    DocFootnote,
720    DocForeword,
721    DocGlossary,
722    DocGlossref,
723    DocIndex,
724    DocIntroduction,
725    DocNoteref,
726    DocNotice,
727    DocPagebreak,
728    DocPagefooter,
729    DocPageheader,
730    DocPagelist,
731    DocPart,
732    DocPreface,
733    DocPrologue,
734    DocPullquote,
735    DocQna,
736    DocSubtitle,
737    DocTip,
738    DocToc,
739    Document,
740    Emphasis,
741    Feed,
742    Figure,
743    Form,
744    Generic,
745    GraphicsDocument,
746    GraphicsObject,
747    GraphicsSymbol,
748    Grid,
749    Gridcell,
750    Group,
751    Heading,
752    Img,
753    Insertion,
754    Link,
755    List,
756    Listbox,
757    Listitem,
758    Log,
759    Main,
760    Mark,
761    Marquee,
762    Math,
763    Menu,
764    Menubar,
765    Menuitem,
766    Menuitemcheckbox,
767    Menuitemradio,
768    Meter,
769    Navigation,
770    None,
771    Note,
772    Option,
773    Paragraph,
774    Presentation,
775    Progressbar,
776    Radio,
777    Radiogroup,
778    Region,
779    Row,
780    Rowgroup,
781    Rowheader,
782    Scrollbar,
783    Search,
784    Searchbox,
785    Separator,
786    Slider,
787    Spinbutton,
788    Status,
789    Strong,
790    Subscript,
791    Superscript,
792    Switch,
793    Tab,
794    Table,
795    Tablist,
796    Tabpanel,
797    Term,
798    Textbox,
799    Time,
800    Timer,
801    Toolbar,
802    Tooltip,
803    Tree,
804    Treegrid,
805    Treeitem,
806}
807
808impl FromStr for AriaRole {
809    type Err = UnknownRoleError;
810
811    fn from_str(s: &str) -> Result<Self, Self::Err> {
812        match s {
813            "alert" => Ok(AriaRole::Alert),
814            "alertdialog" => Ok(AriaRole::Alertdialog),
815            "application" => Ok(AriaRole::Application),
816            "article" => Ok(AriaRole::Article),
817            "banner" => Ok(AriaRole::Banner),
818            "blockquote" => Ok(AriaRole::Blockquote),
819            "button" => Ok(AriaRole::Button),
820            "caption" => Ok(AriaRole::Caption),
821            "cell" => Ok(AriaRole::Cell),
822            "checkbox" => Ok(AriaRole::Checkbox),
823            "code" => Ok(AriaRole::Code),
824            "columnheader" => Ok(AriaRole::Columnheader),
825            "combobox" => Ok(AriaRole::Combobox),
826            "complementary" => Ok(AriaRole::Complementary),
827            "contentinfo" => Ok(AriaRole::Contentinfo),
828            "definition" => Ok(AriaRole::Definition),
829            "deletion" => Ok(AriaRole::Deletion),
830            "dialog" => Ok(AriaRole::Dialog),
831            "directory" => Ok(AriaRole::Directory),
832            "doc-abstract" => Ok(AriaRole::DocAbstract),
833            "doc-acknowledgments" => Ok(AriaRole::DocAcknowledgments),
834            "doc-afterword" => Ok(AriaRole::DocAfterword),
835            "doc-appendix" => Ok(AriaRole::DocAppendix),
836            "doc-backlink" => Ok(AriaRole::DocBacklink),
837            "doc-biblioentry" => Ok(AriaRole::DocBiblioentry),
838            "doc-bibliography" => Ok(AriaRole::DocBibliography),
839            "doc-biblioref" => Ok(AriaRole::DocBiblioref),
840            "doc-chapter" => Ok(AriaRole::DocChapter),
841            "doc-colophon" => Ok(AriaRole::DocColophon),
842            "doc-conclusion" => Ok(AriaRole::DocConclusion),
843            "doc-cover" => Ok(AriaRole::DocCover),
844            "doc-credit" => Ok(AriaRole::DocCredit),
845            "doc-credits" => Ok(AriaRole::DocCredits),
846            "doc-dedication" => Ok(AriaRole::DocDedication),
847            "doc-endnote" => Ok(AriaRole::DocEndnote),
848            "doc-endnotes" => Ok(AriaRole::DocEndnotes),
849            "doc-epigraph" => Ok(AriaRole::DocEpigraph),
850            "doc-epilogue" => Ok(AriaRole::DocEpilogue),
851            "doc-errata" => Ok(AriaRole::DocErrata),
852            "doc-example" => Ok(AriaRole::DocExample),
853            "doc-footnote" => Ok(AriaRole::DocFootnote),
854            "doc-foreword" => Ok(AriaRole::DocForeword),
855            "doc-glossary" => Ok(AriaRole::DocGlossary),
856            "doc-glossref" => Ok(AriaRole::DocGlossref),
857            "doc-index" => Ok(AriaRole::DocIndex),
858            "doc-introduction" => Ok(AriaRole::DocIntroduction),
859            "doc-noteref" => Ok(AriaRole::DocNoteref),
860            "doc-notice" => Ok(AriaRole::DocNotice),
861            "doc-pagebreak" => Ok(AriaRole::DocPagebreak),
862            "doc-pagefooter" => Ok(AriaRole::DocPagefooter),
863            "doc-pageheader" => Ok(AriaRole::DocPageheader),
864            "doc-pagelist" => Ok(AriaRole::DocPagelist),
865            "doc-part" => Ok(AriaRole::DocPart),
866            "doc-preface" => Ok(AriaRole::DocPreface),
867            "doc-prologue" => Ok(AriaRole::DocPrologue),
868            "doc-pullquote" => Ok(AriaRole::DocPullquote),
869            "doc-qna" => Ok(AriaRole::DocQna),
870            "doc-subtitle" => Ok(AriaRole::DocSubtitle),
871            "doc-tip" => Ok(AriaRole::DocTip),
872            "doc-toc" => Ok(AriaRole::DocToc),
873            "document" => Ok(AriaRole::Document),
874            "emphasis" => Ok(AriaRole::Emphasis),
875            "feed" => Ok(AriaRole::Feed),
876            "figure" => Ok(AriaRole::Figure),
877            "form" => Ok(AriaRole::Form),
878            "generic" => Ok(AriaRole::Generic),
879            "graphics-document" => Ok(AriaRole::GraphicsDocument),
880            "graphics-object" => Ok(AriaRole::GraphicsObject),
881            "graphics-symbol" => Ok(AriaRole::GraphicsSymbol),
882            "grid" => Ok(AriaRole::Grid),
883            "gridcell" => Ok(AriaRole::Gridcell),
884            "group" => Ok(AriaRole::Group),
885            "heading" => Ok(AriaRole::Heading),
886            "img" => Ok(AriaRole::Img),
887            "insertion" => Ok(AriaRole::Insertion),
888            "link" => Ok(AriaRole::Link),
889            "list" => Ok(AriaRole::List),
890            "listbox" => Ok(AriaRole::Listbox),
891            "listitem" => Ok(AriaRole::Listitem),
892            "log" => Ok(AriaRole::Log),
893            "main" => Ok(AriaRole::Main),
894            "mark" => Ok(AriaRole::Mark),
895            "marquee" => Ok(AriaRole::Marquee),
896            "math" => Ok(AriaRole::Math),
897            "menu" => Ok(AriaRole::Menu),
898            "menubar" => Ok(AriaRole::Menubar),
899            "menuitem" => Ok(AriaRole::Menuitem),
900            "menuitemcheckbox" => Ok(AriaRole::Menuitemcheckbox),
901            "menuitemradio" => Ok(AriaRole::Menuitemradio),
902            "meter" => Ok(AriaRole::Meter),
903            "navigation" => Ok(AriaRole::Navigation),
904            "none" => Ok(AriaRole::None),
905            "note" => Ok(AriaRole::Note),
906            "option" => Ok(AriaRole::Option),
907            "paragraph" => Ok(AriaRole::Paragraph),
908            "presentation" => Ok(AriaRole::Presentation),
909            "progressbar" => Ok(AriaRole::Progressbar),
910            "radio" => Ok(AriaRole::Radio),
911            "radiogroup" => Ok(AriaRole::Radiogroup),
912            "region" => Ok(AriaRole::Region),
913            "row" => Ok(AriaRole::Row),
914            "rowgroup" => Ok(AriaRole::Rowgroup),
915            "rowheader" => Ok(AriaRole::Rowheader),
916            "scrollbar" => Ok(AriaRole::Scrollbar),
917            "search" => Ok(AriaRole::Search),
918            "searchbox" => Ok(AriaRole::Searchbox),
919            "separator" => Ok(AriaRole::Separator),
920            "slider" => Ok(AriaRole::Slider),
921            "spinbutton" => Ok(AriaRole::Spinbutton),
922            "status" => Ok(AriaRole::Status),
923            "strong" => Ok(AriaRole::Strong),
924            "subscript" => Ok(AriaRole::Subscript),
925            "superscript" => Ok(AriaRole::Superscript),
926            "switch" => Ok(AriaRole::Switch),
927            "tab" => Ok(AriaRole::Tab),
928            "table" => Ok(AriaRole::Table),
929            "tablist" => Ok(AriaRole::Tablist),
930            "tabpanel" => Ok(AriaRole::Tabpanel),
931            "term" => Ok(AriaRole::Term),
932            "textbox" => Ok(AriaRole::Textbox),
933            "time" => Ok(AriaRole::Time),
934            "timer" => Ok(AriaRole::Timer),
935            "toolbar" => Ok(AriaRole::Toolbar),
936            "tooltip" => Ok(AriaRole::Tooltip),
937            "tree" => Ok(AriaRole::Tree),
938            "treegrid" => Ok(AriaRole::Treegrid),
939            "treeitem" => Ok(AriaRole::Treeitem),
940            _ => Err(UnknownRoleError),
941        }
942    }
943}
944
945impl Display for AriaRole {
946    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
947        write!(
948            f,
949            "{}",
950            match self {
951                AriaRole::Alert => "alert",
952                AriaRole::Alertdialog => "alertdialog",
953                AriaRole::Application => "application",
954                AriaRole::Article => "article",
955                AriaRole::Banner => "banner",
956                AriaRole::Blockquote => "blockquote",
957                AriaRole::Button => "button",
958                AriaRole::Caption => "caption",
959                AriaRole::Cell => "cell",
960                AriaRole::Checkbox => "checkbox",
961                AriaRole::Code => "code",
962                AriaRole::Columnheader => "columnheader",
963                AriaRole::Combobox => "combobox",
964                AriaRole::Complementary => "complementary",
965                AriaRole::Contentinfo => "contentinfo",
966                AriaRole::Definition => "definition",
967                AriaRole::Deletion => "deletion",
968                AriaRole::Dialog => "dialog",
969                AriaRole::Directory => "directory",
970                AriaRole::DocAbstract => "doc-abstract",
971                AriaRole::DocAcknowledgments => "doc-acknowledgments",
972                AriaRole::DocAfterword => "doc-afterword",
973                AriaRole::DocAppendix => "doc-appendix",
974                AriaRole::DocBacklink => "doc-backlink",
975                AriaRole::DocBiblioentry => "doc-biblioentry",
976                AriaRole::DocBibliography => "doc-bibliography",
977                AriaRole::DocBiblioref => "doc-biblioref",
978                AriaRole::DocChapter => "doc-chapter",
979                AriaRole::DocColophon => "doc-colophon",
980                AriaRole::DocConclusion => "doc-conclusion",
981                AriaRole::DocCover => "doc-cover",
982                AriaRole::DocCredit => "doc-credit",
983                AriaRole::DocCredits => "doc-credits",
984                AriaRole::DocDedication => "doc-dedication",
985                AriaRole::DocEndnote => "doc-endnote",
986                AriaRole::DocEndnotes => "doc-endnotes",
987                AriaRole::DocEpigraph => "doc-epigraph",
988                AriaRole::DocEpilogue => "doc-epilogue",
989                AriaRole::DocErrata => "doc-errata",
990                AriaRole::DocExample => "doc-example",
991                AriaRole::DocFootnote => "doc-footnote",
992                AriaRole::DocForeword => "doc-foreword",
993                AriaRole::DocGlossary => "doc-glossary",
994                AriaRole::DocGlossref => "doc-glossref",
995                AriaRole::DocIndex => "doc-index",
996                AriaRole::DocIntroduction => "doc-introduction",
997                AriaRole::DocNoteref => "doc-noteref",
998                AriaRole::DocNotice => "doc-notice",
999                AriaRole::DocPagebreak => "doc-pagebreak",
1000                AriaRole::DocPagefooter => "doc-pagefooter",
1001                AriaRole::DocPageheader => "doc-pageheader",
1002                AriaRole::DocPagelist => "doc-pagelist",
1003                AriaRole::DocPart => "doc-part",
1004                AriaRole::DocPreface => "doc-preface",
1005                AriaRole::DocPrologue => "doc-prologue",
1006                AriaRole::DocPullquote => "doc-pullquote",
1007                AriaRole::DocQna => "doc-qna",
1008                AriaRole::DocSubtitle => "doc-subtitle",
1009                AriaRole::DocTip => "doc-tip",
1010                AriaRole::DocToc => "doc-toc",
1011                AriaRole::Document => "document",
1012                AriaRole::Emphasis => "emphasis",
1013                AriaRole::Feed => "feed",
1014                AriaRole::Figure => "figure",
1015                AriaRole::Form => "form",
1016                AriaRole::Generic => "generic",
1017                AriaRole::GraphicsDocument => "graphics-document",
1018                AriaRole::GraphicsObject => "graphics-object",
1019                AriaRole::GraphicsSymbol => "graphics-symbol",
1020                AriaRole::Grid => "grid",
1021                AriaRole::Gridcell => "gridcell",
1022                AriaRole::Group => "group",
1023                AriaRole::Heading => "heading",
1024                AriaRole::Img => "img",
1025                AriaRole::Insertion => "insertion",
1026                AriaRole::Link => "link",
1027                AriaRole::List => "list",
1028                AriaRole::Listbox => "listbox",
1029                AriaRole::Listitem => "listitem",
1030                AriaRole::Log => "log",
1031                AriaRole::Main => "main",
1032                AriaRole::Mark => "mark",
1033                AriaRole::Marquee => "marquee",
1034                AriaRole::Math => "math",
1035                AriaRole::Menu => "menu",
1036                AriaRole::Menubar => "menubar",
1037                AriaRole::Menuitem => "menuitem",
1038                AriaRole::Menuitemcheckbox => "menuitemcheckbox",
1039                AriaRole::Menuitemradio => "menuitemradio",
1040                AriaRole::Meter => "meter",
1041                AriaRole::Navigation => "navigation",
1042                AriaRole::None => "none",
1043                AriaRole::Note => "note",
1044                AriaRole::Option => "option",
1045                AriaRole::Paragraph => "paragraph",
1046                AriaRole::Presentation => "presentation",
1047                AriaRole::Progressbar => "progressbar",
1048                AriaRole::Radio => "radio",
1049                AriaRole::Radiogroup => "radiogroup",
1050                AriaRole::Region => "region",
1051                AriaRole::Row => "row",
1052                AriaRole::Rowgroup => "rowgroup",
1053                AriaRole::Rowheader => "rowheader",
1054                AriaRole::Scrollbar => "scrollbar",
1055                AriaRole::Search => "search",
1056                AriaRole::Searchbox => "searchbox",
1057                AriaRole::Separator => "separator",
1058                AriaRole::Slider => "slider",
1059                AriaRole::Spinbutton => "spinbutton",
1060                AriaRole::Status => "status",
1061                AriaRole::Strong => "strong",
1062                AriaRole::Subscript => "subscript",
1063                AriaRole::Superscript => "superscript",
1064                AriaRole::Switch => "switch",
1065                AriaRole::Tab => "tab",
1066                AriaRole::Table => "table",
1067                AriaRole::Tablist => "tablist",
1068                AriaRole::Tabpanel => "tabpanel",
1069                AriaRole::Term => "term",
1070                AriaRole::Textbox => "textbox",
1071                AriaRole::Time => "time",
1072                AriaRole::Timer => "timer",
1073                AriaRole::Toolbar => "toolbar",
1074                AriaRole::Tooltip => "tooltip",
1075                AriaRole::Tree => "tree",
1076                AriaRole::Treegrid => "treegrid",
1077                AriaRole::Treeitem => "treeitem",
1078            }
1079        )
1080    }
1081}
1082
1083#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
1084pub enum AriaRoleDefinitionKey {
1085    Alert,
1086    Alertdialog,
1087    Application,
1088    Article,
1089    Banner,
1090    Blockquote,
1091    Button,
1092    Caption,
1093    Cell,
1094    Checkbox,
1095    Code,
1096    Columnheader,
1097    Combobox,
1098    Command,
1099    Complementary,
1100    Composite,
1101    Contentinfo,
1102    Definition,
1103    Deletion,
1104    Dialog,
1105    Directory,
1106    DocAbstract,
1107    DocAcknowledgments,
1108    DocAfterword,
1109    DocAppendix,
1110    DocBacklink,
1111    DocBiblioentry,
1112    DocBibliography,
1113    DocBiblioref,
1114    DocChapter,
1115    DocColophon,
1116    DocConclusion,
1117    DocCover,
1118    DocCredit,
1119    DocCredits,
1120    DocDedication,
1121    DocEndnote,
1122    DocEndnotes,
1123    DocEpigraph,
1124    DocEpilogue,
1125    DocErrata,
1126    DocExample,
1127    DocFootnote,
1128    DocForeword,
1129    DocGlossary,
1130    DocGlossref,
1131    DocIndex,
1132    DocIntroduction,
1133    DocNoteref,
1134    DocNotice,
1135    DocPagebreak,
1136    DocPagefooter,
1137    DocPageheader,
1138    DocPagelist,
1139    DocPart,
1140    DocPreface,
1141    DocPrologue,
1142    DocPullquote,
1143    DocQna,
1144    DocSubtitle,
1145    DocTip,
1146    DocToc,
1147    Document,
1148    Emphasis,
1149    Feed,
1150    Figure,
1151    Form,
1152    Generic,
1153    GraphicsDocument,
1154    GraphicsObject,
1155    GraphicsSymbol,
1156    Grid,
1157    Gridcell,
1158    Group,
1159    Heading,
1160    Img,
1161    Input,
1162    Insertion,
1163    Landmark,
1164    Link,
1165    List,
1166    Listbox,
1167    Listitem,
1168    Log,
1169    Main,
1170    Mark,
1171    Marquee,
1172    Math,
1173    Menu,
1174    Menubar,
1175    Menuitem,
1176    Menuitemcheckbox,
1177    Menuitemradio,
1178    Meter,
1179    Navigation,
1180    None,
1181    Note,
1182    Option,
1183    Paragraph,
1184    Presentation,
1185    Progressbar,
1186    Radio,
1187    Radiogroup,
1188    Range,
1189    Region,
1190    Roletype,
1191    Row,
1192    Rowgroup,
1193    Rowheader,
1194    Scrollbar,
1195    Search,
1196    Searchbox,
1197    Section,
1198    Sectionhead,
1199    Select,
1200    Separator,
1201    Slider,
1202    Spinbutton,
1203    Status,
1204    Strong,
1205    Structure,
1206    Subscript,
1207    Superscript,
1208    Switch,
1209    Tab,
1210    Table,
1211    Tablist,
1212    Tabpanel,
1213    Term,
1214    Textbox,
1215    Time,
1216    Timer,
1217    Toolbar,
1218    Tooltip,
1219    Tree,
1220    Treegrid,
1221    Treeitem,
1222    Widget,
1223    Window,
1224}
1225
1226impl From<AriaAbstractRole> for AriaRoleDefinitionKey {
1227    fn from(value: AriaAbstractRole) -> Self {
1228        match value {
1229            AriaAbstractRole::Command => AriaRoleDefinitionKey::Command,
1230            AriaAbstractRole::Composite => AriaRoleDefinitionKey::Composite,
1231            AriaAbstractRole::Input => AriaRoleDefinitionKey::Input,
1232            AriaAbstractRole::Landmark => AriaRoleDefinitionKey::Landmark,
1233            AriaAbstractRole::Range => AriaRoleDefinitionKey::Range,
1234            AriaAbstractRole::Roletype => AriaRoleDefinitionKey::Roletype,
1235            AriaAbstractRole::Section => AriaRoleDefinitionKey::Section,
1236            AriaAbstractRole::Sectionhead => AriaRoleDefinitionKey::Sectionhead,
1237            AriaAbstractRole::Select => AriaRoleDefinitionKey::Select,
1238            AriaAbstractRole::Structure => AriaRoleDefinitionKey::Structure,
1239            AriaAbstractRole::Widget => AriaRoleDefinitionKey::Widget,
1240            AriaAbstractRole::Window => AriaRoleDefinitionKey::Window,
1241        }
1242    }
1243}
1244
1245impl From<AriaRole> for AriaRoleDefinitionKey {
1246    fn from(value: AriaRole) -> Self {
1247        match value {
1248            AriaRole::Alert => AriaRoleDefinitionKey::Alert,
1249            AriaRole::Alertdialog => AriaRoleDefinitionKey::Alertdialog,
1250            AriaRole::Application => AriaRoleDefinitionKey::Application,
1251            AriaRole::Article => AriaRoleDefinitionKey::Article,
1252            AriaRole::Banner => AriaRoleDefinitionKey::Banner,
1253            AriaRole::Blockquote => AriaRoleDefinitionKey::Blockquote,
1254            AriaRole::Button => AriaRoleDefinitionKey::Button,
1255            AriaRole::Caption => AriaRoleDefinitionKey::Caption,
1256            AriaRole::Cell => AriaRoleDefinitionKey::Cell,
1257            AriaRole::Checkbox => AriaRoleDefinitionKey::Checkbox,
1258            AriaRole::Code => AriaRoleDefinitionKey::Code,
1259            AriaRole::Columnheader => AriaRoleDefinitionKey::Columnheader,
1260            AriaRole::Combobox => AriaRoleDefinitionKey::Combobox,
1261            AriaRole::Complementary => AriaRoleDefinitionKey::Complementary,
1262            AriaRole::Contentinfo => AriaRoleDefinitionKey::Contentinfo,
1263            AriaRole::Definition => AriaRoleDefinitionKey::Definition,
1264            AriaRole::Deletion => AriaRoleDefinitionKey::Deletion,
1265            AriaRole::Dialog => AriaRoleDefinitionKey::Dialog,
1266            AriaRole::Directory => AriaRoleDefinitionKey::Directory,
1267            AriaRole::DocAbstract => AriaRoleDefinitionKey::DocAbstract,
1268            AriaRole::DocAcknowledgments => AriaRoleDefinitionKey::DocAcknowledgments,
1269            AriaRole::DocAfterword => AriaRoleDefinitionKey::DocAfterword,
1270            AriaRole::DocAppendix => AriaRoleDefinitionKey::DocAppendix,
1271            AriaRole::DocBacklink => AriaRoleDefinitionKey::DocBacklink,
1272            AriaRole::DocBiblioentry => AriaRoleDefinitionKey::DocBiblioentry,
1273            AriaRole::DocBibliography => AriaRoleDefinitionKey::DocBibliography,
1274            AriaRole::DocBiblioref => AriaRoleDefinitionKey::DocBiblioref,
1275            AriaRole::DocChapter => AriaRoleDefinitionKey::DocChapter,
1276            AriaRole::DocColophon => AriaRoleDefinitionKey::DocColophon,
1277            AriaRole::DocConclusion => AriaRoleDefinitionKey::DocConclusion,
1278            AriaRole::DocCover => AriaRoleDefinitionKey::DocCover,
1279            AriaRole::DocCredit => AriaRoleDefinitionKey::DocCredit,
1280            AriaRole::DocCredits => AriaRoleDefinitionKey::DocCredits,
1281            AriaRole::DocDedication => AriaRoleDefinitionKey::DocDedication,
1282            AriaRole::DocEndnote => AriaRoleDefinitionKey::DocEndnote,
1283            AriaRole::DocEndnotes => AriaRoleDefinitionKey::DocEndnotes,
1284            AriaRole::DocEpigraph => AriaRoleDefinitionKey::DocEpigraph,
1285            AriaRole::DocEpilogue => AriaRoleDefinitionKey::DocEpilogue,
1286            AriaRole::DocErrata => AriaRoleDefinitionKey::DocErrata,
1287            AriaRole::DocExample => AriaRoleDefinitionKey::DocExample,
1288            AriaRole::DocFootnote => AriaRoleDefinitionKey::DocFootnote,
1289            AriaRole::DocForeword => AriaRoleDefinitionKey::DocForeword,
1290            AriaRole::DocGlossary => AriaRoleDefinitionKey::DocGlossary,
1291            AriaRole::DocGlossref => AriaRoleDefinitionKey::DocGlossref,
1292            AriaRole::DocIndex => AriaRoleDefinitionKey::DocIndex,
1293            AriaRole::DocIntroduction => AriaRoleDefinitionKey::DocIntroduction,
1294            AriaRole::DocNoteref => AriaRoleDefinitionKey::DocNoteref,
1295            AriaRole::DocNotice => AriaRoleDefinitionKey::DocNotice,
1296            AriaRole::DocPagebreak => AriaRoleDefinitionKey::DocPagebreak,
1297            AriaRole::DocPagefooter => AriaRoleDefinitionKey::DocPagefooter,
1298            AriaRole::DocPageheader => AriaRoleDefinitionKey::DocPageheader,
1299            AriaRole::DocPagelist => AriaRoleDefinitionKey::DocPagelist,
1300            AriaRole::DocPart => AriaRoleDefinitionKey::DocPart,
1301            AriaRole::DocPreface => AriaRoleDefinitionKey::DocPreface,
1302            AriaRole::DocPrologue => AriaRoleDefinitionKey::DocPrologue,
1303            AriaRole::DocPullquote => AriaRoleDefinitionKey::DocPullquote,
1304            AriaRole::DocQna => AriaRoleDefinitionKey::DocQna,
1305            AriaRole::DocSubtitle => AriaRoleDefinitionKey::DocSubtitle,
1306            AriaRole::DocTip => AriaRoleDefinitionKey::DocTip,
1307            AriaRole::DocToc => AriaRoleDefinitionKey::DocToc,
1308            AriaRole::Document => AriaRoleDefinitionKey::Document,
1309            AriaRole::Emphasis => AriaRoleDefinitionKey::Emphasis,
1310            AriaRole::Feed => AriaRoleDefinitionKey::Feed,
1311            AriaRole::Figure => AriaRoleDefinitionKey::Figure,
1312            AriaRole::Form => AriaRoleDefinitionKey::Form,
1313            AriaRole::Generic => AriaRoleDefinitionKey::Generic,
1314            AriaRole::GraphicsDocument => AriaRoleDefinitionKey::GraphicsDocument,
1315            AriaRole::GraphicsObject => AriaRoleDefinitionKey::GraphicsObject,
1316            AriaRole::GraphicsSymbol => AriaRoleDefinitionKey::GraphicsSymbol,
1317            AriaRole::Grid => AriaRoleDefinitionKey::Grid,
1318            AriaRole::Gridcell => AriaRoleDefinitionKey::Gridcell,
1319            AriaRole::Group => AriaRoleDefinitionKey::Group,
1320            AriaRole::Heading => AriaRoleDefinitionKey::Heading,
1321            AriaRole::Img => AriaRoleDefinitionKey::Img,
1322            AriaRole::Insertion => AriaRoleDefinitionKey::Insertion,
1323            AriaRole::Link => AriaRoleDefinitionKey::Link,
1324            AriaRole::List => AriaRoleDefinitionKey::List,
1325            AriaRole::Listbox => AriaRoleDefinitionKey::Listbox,
1326            AriaRole::Listitem => AriaRoleDefinitionKey::Listitem,
1327            AriaRole::Log => AriaRoleDefinitionKey::Log,
1328            AriaRole::Main => AriaRoleDefinitionKey::Main,
1329            AriaRole::Mark => AriaRoleDefinitionKey::Mark,
1330            AriaRole::Marquee => AriaRoleDefinitionKey::Marquee,
1331            AriaRole::Math => AriaRoleDefinitionKey::Math,
1332            AriaRole::Menu => AriaRoleDefinitionKey::Menu,
1333            AriaRole::Menubar => AriaRoleDefinitionKey::Menubar,
1334            AriaRole::Menuitem => AriaRoleDefinitionKey::Menuitem,
1335            AriaRole::Menuitemcheckbox => AriaRoleDefinitionKey::Menuitemcheckbox,
1336            AriaRole::Menuitemradio => AriaRoleDefinitionKey::Menuitemradio,
1337            AriaRole::Meter => AriaRoleDefinitionKey::Meter,
1338            AriaRole::Navigation => AriaRoleDefinitionKey::Navigation,
1339            AriaRole::None => AriaRoleDefinitionKey::None,
1340            AriaRole::Note => AriaRoleDefinitionKey::Note,
1341            AriaRole::Option => AriaRoleDefinitionKey::Option,
1342            AriaRole::Paragraph => AriaRoleDefinitionKey::Paragraph,
1343            AriaRole::Presentation => AriaRoleDefinitionKey::Presentation,
1344            AriaRole::Progressbar => AriaRoleDefinitionKey::Progressbar,
1345            AriaRole::Radio => AriaRoleDefinitionKey::Radio,
1346            AriaRole::Radiogroup => AriaRoleDefinitionKey::Radiogroup,
1347            AriaRole::Region => AriaRoleDefinitionKey::Region,
1348            AriaRole::Row => AriaRoleDefinitionKey::Row,
1349            AriaRole::Rowgroup => AriaRoleDefinitionKey::Rowgroup,
1350            AriaRole::Rowheader => AriaRoleDefinitionKey::Rowheader,
1351            AriaRole::Scrollbar => AriaRoleDefinitionKey::Scrollbar,
1352            AriaRole::Search => AriaRoleDefinitionKey::Search,
1353            AriaRole::Searchbox => AriaRoleDefinitionKey::Searchbox,
1354            AriaRole::Separator => AriaRoleDefinitionKey::Separator,
1355            AriaRole::Slider => AriaRoleDefinitionKey::Slider,
1356            AriaRole::Spinbutton => AriaRoleDefinitionKey::Spinbutton,
1357            AriaRole::Status => AriaRoleDefinitionKey::Status,
1358            AriaRole::Strong => AriaRoleDefinitionKey::Strong,
1359            AriaRole::Subscript => AriaRoleDefinitionKey::Subscript,
1360            AriaRole::Superscript => AriaRoleDefinitionKey::Superscript,
1361            AriaRole::Switch => AriaRoleDefinitionKey::Switch,
1362            AriaRole::Tab => AriaRoleDefinitionKey::Tab,
1363            AriaRole::Table => AriaRoleDefinitionKey::Table,
1364            AriaRole::Tablist => AriaRoleDefinitionKey::Tablist,
1365            AriaRole::Tabpanel => AriaRoleDefinitionKey::Tabpanel,
1366            AriaRole::Term => AriaRoleDefinitionKey::Term,
1367            AriaRole::Textbox => AriaRoleDefinitionKey::Textbox,
1368            AriaRole::Time => AriaRoleDefinitionKey::Time,
1369            AriaRole::Timer => AriaRoleDefinitionKey::Timer,
1370            AriaRole::Toolbar => AriaRoleDefinitionKey::Toolbar,
1371            AriaRole::Tooltip => AriaRoleDefinitionKey::Tooltip,
1372            AriaRole::Tree => AriaRoleDefinitionKey::Tree,
1373            AriaRole::Treegrid => AriaRoleDefinitionKey::Treegrid,
1374            AriaRole::Treeitem => AriaRoleDefinitionKey::Treeitem,
1375        }
1376    }
1377}
1378
1379impl FromStr for AriaRoleDefinitionKey {
1380    type Err = UnknownRoleError;
1381
1382    fn from_str(s: &str) -> Result<Self, Self::Err> {
1383        match s {
1384            "alert" => Ok(AriaRoleDefinitionKey::Alert),
1385            "alertdialog" => Ok(AriaRoleDefinitionKey::Alertdialog),
1386            "application" => Ok(AriaRoleDefinitionKey::Application),
1387            "article" => Ok(AriaRoleDefinitionKey::Article),
1388            "banner" => Ok(AriaRoleDefinitionKey::Banner),
1389            "blockquote" => Ok(AriaRoleDefinitionKey::Blockquote),
1390            "button" => Ok(AriaRoleDefinitionKey::Button),
1391            "caption" => Ok(AriaRoleDefinitionKey::Caption),
1392            "cell" => Ok(AriaRoleDefinitionKey::Cell),
1393            "checkbox" => Ok(AriaRoleDefinitionKey::Checkbox),
1394            "code" => Ok(AriaRoleDefinitionKey::Code),
1395            "columnheader" => Ok(AriaRoleDefinitionKey::Columnheader),
1396            "combobox" => Ok(AriaRoleDefinitionKey::Combobox),
1397            "command" => Ok(AriaRoleDefinitionKey::Command),
1398            "complementary" => Ok(AriaRoleDefinitionKey::Complementary),
1399            "composite" => Ok(AriaRoleDefinitionKey::Composite),
1400            "contentinfo" => Ok(AriaRoleDefinitionKey::Contentinfo),
1401            "definition" => Ok(AriaRoleDefinitionKey::Definition),
1402            "deletion" => Ok(AriaRoleDefinitionKey::Deletion),
1403            "dialog" => Ok(AriaRoleDefinitionKey::Dialog),
1404            "directory" => Ok(AriaRoleDefinitionKey::Directory),
1405            "doc-abstract" => Ok(AriaRoleDefinitionKey::DocAbstract),
1406            "doc-acknowledgments" => Ok(AriaRoleDefinitionKey::DocAcknowledgments),
1407            "doc-afterword" => Ok(AriaRoleDefinitionKey::DocAfterword),
1408            "doc-appendix" => Ok(AriaRoleDefinitionKey::DocAppendix),
1409            "doc-backlink" => Ok(AriaRoleDefinitionKey::DocBacklink),
1410            "doc-biblioentry" => Ok(AriaRoleDefinitionKey::DocBiblioentry),
1411            "doc-bibliography" => Ok(AriaRoleDefinitionKey::DocBibliography),
1412            "doc-biblioref" => Ok(AriaRoleDefinitionKey::DocBiblioref),
1413            "doc-chapter" => Ok(AriaRoleDefinitionKey::DocChapter),
1414            "doc-colophon" => Ok(AriaRoleDefinitionKey::DocColophon),
1415            "doc-conclusion" => Ok(AriaRoleDefinitionKey::DocConclusion),
1416            "doc-cover" => Ok(AriaRoleDefinitionKey::DocCover),
1417            "doc-credit" => Ok(AriaRoleDefinitionKey::DocCredit),
1418            "doc-credits" => Ok(AriaRoleDefinitionKey::DocCredits),
1419            "doc-dedication" => Ok(AriaRoleDefinitionKey::DocDedication),
1420            "doc-endnote" => Ok(AriaRoleDefinitionKey::DocEndnote),
1421            "doc-endnotes" => Ok(AriaRoleDefinitionKey::DocEndnotes),
1422            "doc-epigraph" => Ok(AriaRoleDefinitionKey::DocEpigraph),
1423            "doc-epilogue" => Ok(AriaRoleDefinitionKey::DocEpilogue),
1424            "doc-errata" => Ok(AriaRoleDefinitionKey::DocErrata),
1425            "doc-example" => Ok(AriaRoleDefinitionKey::DocExample),
1426            "doc-footnote" => Ok(AriaRoleDefinitionKey::DocFootnote),
1427            "doc-foreword" => Ok(AriaRoleDefinitionKey::DocForeword),
1428            "doc-glossary" => Ok(AriaRoleDefinitionKey::DocGlossary),
1429            "doc-glossref" => Ok(AriaRoleDefinitionKey::DocGlossref),
1430            "doc-index" => Ok(AriaRoleDefinitionKey::DocIndex),
1431            "doc-introduction" => Ok(AriaRoleDefinitionKey::DocIntroduction),
1432            "doc-noteref" => Ok(AriaRoleDefinitionKey::DocNoteref),
1433            "doc-notice" => Ok(AriaRoleDefinitionKey::DocNotice),
1434            "doc-pagebreak" => Ok(AriaRoleDefinitionKey::DocPagebreak),
1435            "doc-pagefooter" => Ok(AriaRoleDefinitionKey::DocPagefooter),
1436            "doc-pageheader" => Ok(AriaRoleDefinitionKey::DocPageheader),
1437            "doc-pagelist" => Ok(AriaRoleDefinitionKey::DocPagelist),
1438            "doc-part" => Ok(AriaRoleDefinitionKey::DocPart),
1439            "doc-preface" => Ok(AriaRoleDefinitionKey::DocPreface),
1440            "doc-prologue" => Ok(AriaRoleDefinitionKey::DocPrologue),
1441            "doc-pullquote" => Ok(AriaRoleDefinitionKey::DocPullquote),
1442            "doc-qna" => Ok(AriaRoleDefinitionKey::DocQna),
1443            "doc-subtitle" => Ok(AriaRoleDefinitionKey::DocSubtitle),
1444            "doc-tip" => Ok(AriaRoleDefinitionKey::DocTip),
1445            "doc-toc" => Ok(AriaRoleDefinitionKey::DocToc),
1446            "document" => Ok(AriaRoleDefinitionKey::Document),
1447            "emphasis" => Ok(AriaRoleDefinitionKey::Emphasis),
1448            "feed" => Ok(AriaRoleDefinitionKey::Feed),
1449            "figure" => Ok(AriaRoleDefinitionKey::Figure),
1450            "form" => Ok(AriaRoleDefinitionKey::Form),
1451            "generic" => Ok(AriaRoleDefinitionKey::Generic),
1452            "graphics-document" => Ok(AriaRoleDefinitionKey::GraphicsDocument),
1453            "graphics-object" => Ok(AriaRoleDefinitionKey::GraphicsObject),
1454            "graphics-symbol" => Ok(AriaRoleDefinitionKey::GraphicsSymbol),
1455            "grid" => Ok(AriaRoleDefinitionKey::Grid),
1456            "gridcell" => Ok(AriaRoleDefinitionKey::Gridcell),
1457            "group" => Ok(AriaRoleDefinitionKey::Group),
1458            "heading" => Ok(AriaRoleDefinitionKey::Heading),
1459            "img" => Ok(AriaRoleDefinitionKey::Img),
1460            "input" => Ok(AriaRoleDefinitionKey::Input),
1461            "insertion" => Ok(AriaRoleDefinitionKey::Insertion),
1462            "landmark" => Ok(AriaRoleDefinitionKey::Landmark),
1463            "link" => Ok(AriaRoleDefinitionKey::Link),
1464            "list" => Ok(AriaRoleDefinitionKey::List),
1465            "listbox" => Ok(AriaRoleDefinitionKey::Listbox),
1466            "listitem" => Ok(AriaRoleDefinitionKey::Listitem),
1467            "log" => Ok(AriaRoleDefinitionKey::Log),
1468            "main" => Ok(AriaRoleDefinitionKey::Main),
1469            "mark" => Ok(AriaRoleDefinitionKey::Mark),
1470            "marquee" => Ok(AriaRoleDefinitionKey::Marquee),
1471            "math" => Ok(AriaRoleDefinitionKey::Math),
1472            "menu" => Ok(AriaRoleDefinitionKey::Menu),
1473            "menubar" => Ok(AriaRoleDefinitionKey::Menubar),
1474            "menuitem" => Ok(AriaRoleDefinitionKey::Menuitem),
1475            "menuitemcheckbox" => Ok(AriaRoleDefinitionKey::Menuitemcheckbox),
1476            "menuitemradio" => Ok(AriaRoleDefinitionKey::Menuitemradio),
1477            "meter" => Ok(AriaRoleDefinitionKey::Meter),
1478            "navigation" => Ok(AriaRoleDefinitionKey::Navigation),
1479            "none" => Ok(AriaRoleDefinitionKey::None),
1480            "note" => Ok(AriaRoleDefinitionKey::Note),
1481            "option" => Ok(AriaRoleDefinitionKey::Option),
1482            "paragraph" => Ok(AriaRoleDefinitionKey::Paragraph),
1483            "presentation" => Ok(AriaRoleDefinitionKey::Presentation),
1484            "progressbar" => Ok(AriaRoleDefinitionKey::Progressbar),
1485            "radio" => Ok(AriaRoleDefinitionKey::Radio),
1486            "radiogroup" => Ok(AriaRoleDefinitionKey::Radiogroup),
1487            "range" => Ok(AriaRoleDefinitionKey::Range),
1488            "region" => Ok(AriaRoleDefinitionKey::Region),
1489            "roletype" => Ok(AriaRoleDefinitionKey::Roletype),
1490            "row" => Ok(AriaRoleDefinitionKey::Row),
1491            "rowgroup" => Ok(AriaRoleDefinitionKey::Rowgroup),
1492            "rowheader" => Ok(AriaRoleDefinitionKey::Rowheader),
1493            "scrollbar" => Ok(AriaRoleDefinitionKey::Scrollbar),
1494            "search" => Ok(AriaRoleDefinitionKey::Search),
1495            "searchbox" => Ok(AriaRoleDefinitionKey::Searchbox),
1496            "section" => Ok(AriaRoleDefinitionKey::Section),
1497            "sectionhead" => Ok(AriaRoleDefinitionKey::Sectionhead),
1498            "select" => Ok(AriaRoleDefinitionKey::Select),
1499            "separator" => Ok(AriaRoleDefinitionKey::Separator),
1500            "slider" => Ok(AriaRoleDefinitionKey::Slider),
1501            "spinbutton" => Ok(AriaRoleDefinitionKey::Spinbutton),
1502            "status" => Ok(AriaRoleDefinitionKey::Status),
1503            "strong" => Ok(AriaRoleDefinitionKey::Strong),
1504            "structure" => Ok(AriaRoleDefinitionKey::Structure),
1505            "subscript" => Ok(AriaRoleDefinitionKey::Subscript),
1506            "superscript" => Ok(AriaRoleDefinitionKey::Superscript),
1507            "switch" => Ok(AriaRoleDefinitionKey::Switch),
1508            "tab" => Ok(AriaRoleDefinitionKey::Tab),
1509            "table" => Ok(AriaRoleDefinitionKey::Table),
1510            "tablist" => Ok(AriaRoleDefinitionKey::Tablist),
1511            "tabpanel" => Ok(AriaRoleDefinitionKey::Tabpanel),
1512            "term" => Ok(AriaRoleDefinitionKey::Term),
1513            "textbox" => Ok(AriaRoleDefinitionKey::Textbox),
1514            "time" => Ok(AriaRoleDefinitionKey::Time),
1515            "timer" => Ok(AriaRoleDefinitionKey::Timer),
1516            "toolbar" => Ok(AriaRoleDefinitionKey::Toolbar),
1517            "tooltip" => Ok(AriaRoleDefinitionKey::Tooltip),
1518            "tree" => Ok(AriaRoleDefinitionKey::Tree),
1519            "treegrid" => Ok(AriaRoleDefinitionKey::Treegrid),
1520            "treeitem" => Ok(AriaRoleDefinitionKey::Treeitem),
1521            "widget" => Ok(AriaRoleDefinitionKey::Widget),
1522            "window" => Ok(AriaRoleDefinitionKey::Window),
1523            _ => Err(UnknownRoleError),
1524        }
1525    }
1526}
1527
1528impl Display for AriaRoleDefinitionKey {
1529    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1530        write!(
1531            f,
1532            "{}",
1533            match self {
1534                AriaRoleDefinitionKey::Alert => "alert",
1535                AriaRoleDefinitionKey::Alertdialog => "alertdialog",
1536                AriaRoleDefinitionKey::Application => "application",
1537                AriaRoleDefinitionKey::Article => "article",
1538                AriaRoleDefinitionKey::Banner => "banner",
1539                AriaRoleDefinitionKey::Blockquote => "blockquote",
1540                AriaRoleDefinitionKey::Button => "button",
1541                AriaRoleDefinitionKey::Caption => "caption",
1542                AriaRoleDefinitionKey::Cell => "cell",
1543                AriaRoleDefinitionKey::Checkbox => "checkbox",
1544                AriaRoleDefinitionKey::Code => "code",
1545                AriaRoleDefinitionKey::Columnheader => "columnheader",
1546                AriaRoleDefinitionKey::Combobox => "combobox",
1547                AriaRoleDefinitionKey::Command => "command",
1548                AriaRoleDefinitionKey::Complementary => "complementary",
1549                AriaRoleDefinitionKey::Composite => "composite",
1550                AriaRoleDefinitionKey::Contentinfo => "contentinfo",
1551                AriaRoleDefinitionKey::Definition => "definition",
1552                AriaRoleDefinitionKey::Deletion => "deletion",
1553                AriaRoleDefinitionKey::Dialog => "dialog",
1554                AriaRoleDefinitionKey::Directory => "directory",
1555                AriaRoleDefinitionKey::DocAbstract => "doc-abstract",
1556                AriaRoleDefinitionKey::DocAcknowledgments => "doc-acknowledgments",
1557                AriaRoleDefinitionKey::DocAfterword => "doc-afterword",
1558                AriaRoleDefinitionKey::DocAppendix => "doc-appendix",
1559                AriaRoleDefinitionKey::DocBacklink => "doc-backlink",
1560                AriaRoleDefinitionKey::DocBiblioentry => "doc-biblioentry",
1561                AriaRoleDefinitionKey::DocBibliography => "doc-bibliography",
1562                AriaRoleDefinitionKey::DocBiblioref => "doc-biblioref",
1563                AriaRoleDefinitionKey::DocChapter => "doc-chapter",
1564                AriaRoleDefinitionKey::DocColophon => "doc-colophon",
1565                AriaRoleDefinitionKey::DocConclusion => "doc-conclusion",
1566                AriaRoleDefinitionKey::DocCover => "doc-cover",
1567                AriaRoleDefinitionKey::DocCredit => "doc-credit",
1568                AriaRoleDefinitionKey::DocCredits => "doc-credits",
1569                AriaRoleDefinitionKey::DocDedication => "doc-dedication",
1570                AriaRoleDefinitionKey::DocEndnote => "doc-endnote",
1571                AriaRoleDefinitionKey::DocEndnotes => "doc-endnotes",
1572                AriaRoleDefinitionKey::DocEpigraph => "doc-epigraph",
1573                AriaRoleDefinitionKey::DocEpilogue => "doc-epilogue",
1574                AriaRoleDefinitionKey::DocErrata => "doc-errata",
1575                AriaRoleDefinitionKey::DocExample => "doc-example",
1576                AriaRoleDefinitionKey::DocFootnote => "doc-footnote",
1577                AriaRoleDefinitionKey::DocForeword => "doc-foreword",
1578                AriaRoleDefinitionKey::DocGlossary => "doc-glossary",
1579                AriaRoleDefinitionKey::DocGlossref => "doc-glossref",
1580                AriaRoleDefinitionKey::DocIndex => "doc-index",
1581                AriaRoleDefinitionKey::DocIntroduction => "doc-introduction",
1582                AriaRoleDefinitionKey::DocNoteref => "doc-noteref",
1583                AriaRoleDefinitionKey::DocNotice => "doc-notice",
1584                AriaRoleDefinitionKey::DocPagebreak => "doc-pagebreak",
1585                AriaRoleDefinitionKey::DocPagefooter => "doc-pagefooter",
1586                AriaRoleDefinitionKey::DocPageheader => "doc-pageheader",
1587                AriaRoleDefinitionKey::DocPagelist => "doc-pagelist",
1588                AriaRoleDefinitionKey::DocPart => "doc-part",
1589                AriaRoleDefinitionKey::DocPreface => "doc-preface",
1590                AriaRoleDefinitionKey::DocPrologue => "doc-prologue",
1591                AriaRoleDefinitionKey::DocPullquote => "doc-pullquote",
1592                AriaRoleDefinitionKey::DocQna => "doc-qna",
1593                AriaRoleDefinitionKey::DocSubtitle => "doc-subtitle",
1594                AriaRoleDefinitionKey::DocTip => "doc-tip",
1595                AriaRoleDefinitionKey::DocToc => "doc-toc",
1596                AriaRoleDefinitionKey::Document => "document",
1597                AriaRoleDefinitionKey::Emphasis => "emphasis",
1598                AriaRoleDefinitionKey::Feed => "feed",
1599                AriaRoleDefinitionKey::Figure => "figure",
1600                AriaRoleDefinitionKey::Form => "form",
1601                AriaRoleDefinitionKey::Generic => "generic",
1602                AriaRoleDefinitionKey::GraphicsDocument => "graphics-document",
1603                AriaRoleDefinitionKey::GraphicsObject => "graphics-object",
1604                AriaRoleDefinitionKey::GraphicsSymbol => "graphics-symbol",
1605                AriaRoleDefinitionKey::Grid => "grid",
1606                AriaRoleDefinitionKey::Gridcell => "gridcell",
1607                AriaRoleDefinitionKey::Group => "group",
1608                AriaRoleDefinitionKey::Heading => "heading",
1609                AriaRoleDefinitionKey::Img => "img",
1610                AriaRoleDefinitionKey::Input => "input",
1611                AriaRoleDefinitionKey::Insertion => "insertion",
1612                AriaRoleDefinitionKey::Landmark => "landmark",
1613                AriaRoleDefinitionKey::Link => "link",
1614                AriaRoleDefinitionKey::List => "list",
1615                AriaRoleDefinitionKey::Listbox => "listbox",
1616                AriaRoleDefinitionKey::Listitem => "listitem",
1617                AriaRoleDefinitionKey::Log => "log",
1618                AriaRoleDefinitionKey::Main => "main",
1619                AriaRoleDefinitionKey::Mark => "mark",
1620                AriaRoleDefinitionKey::Marquee => "marquee",
1621                AriaRoleDefinitionKey::Math => "math",
1622                AriaRoleDefinitionKey::Menu => "menu",
1623                AriaRoleDefinitionKey::Menubar => "menubar",
1624                AriaRoleDefinitionKey::Menuitem => "menuitem",
1625                AriaRoleDefinitionKey::Menuitemcheckbox => "menuitemcheckbox",
1626                AriaRoleDefinitionKey::Menuitemradio => "menuitemradio",
1627                AriaRoleDefinitionKey::Meter => "meter",
1628                AriaRoleDefinitionKey::Navigation => "navigation",
1629                AriaRoleDefinitionKey::None => "none",
1630                AriaRoleDefinitionKey::Note => "note",
1631                AriaRoleDefinitionKey::Option => "option",
1632                AriaRoleDefinitionKey::Paragraph => "paragraph",
1633                AriaRoleDefinitionKey::Presentation => "presentation",
1634                AriaRoleDefinitionKey::Progressbar => "progressbar",
1635                AriaRoleDefinitionKey::Radio => "radio",
1636                AriaRoleDefinitionKey::Radiogroup => "radiogroup",
1637                AriaRoleDefinitionKey::Range => "range",
1638                AriaRoleDefinitionKey::Region => "region",
1639                AriaRoleDefinitionKey::Roletype => "roletype",
1640                AriaRoleDefinitionKey::Row => "row",
1641                AriaRoleDefinitionKey::Rowgroup => "rowgroup",
1642                AriaRoleDefinitionKey::Rowheader => "rowheader",
1643                AriaRoleDefinitionKey::Scrollbar => "scrollbar",
1644                AriaRoleDefinitionKey::Search => "search",
1645                AriaRoleDefinitionKey::Searchbox => "searchbox",
1646                AriaRoleDefinitionKey::Section => "section",
1647                AriaRoleDefinitionKey::Sectionhead => "sectionhead",
1648                AriaRoleDefinitionKey::Select => "select",
1649                AriaRoleDefinitionKey::Separator => "separator",
1650                AriaRoleDefinitionKey::Slider => "slider",
1651                AriaRoleDefinitionKey::Spinbutton => "spinbutton",
1652                AriaRoleDefinitionKey::Status => "status",
1653                AriaRoleDefinitionKey::Strong => "strong",
1654                AriaRoleDefinitionKey::Structure => "structure",
1655                AriaRoleDefinitionKey::Subscript => "subscript",
1656                AriaRoleDefinitionKey::Superscript => "superscript",
1657                AriaRoleDefinitionKey::Switch => "switch",
1658                AriaRoleDefinitionKey::Tab => "tab",
1659                AriaRoleDefinitionKey::Table => "table",
1660                AriaRoleDefinitionKey::Tablist => "tablist",
1661                AriaRoleDefinitionKey::Tabpanel => "tabpanel",
1662                AriaRoleDefinitionKey::Term => "term",
1663                AriaRoleDefinitionKey::Textbox => "textbox",
1664                AriaRoleDefinitionKey::Time => "time",
1665                AriaRoleDefinitionKey::Timer => "timer",
1666                AriaRoleDefinitionKey::Toolbar => "toolbar",
1667                AriaRoleDefinitionKey::Tooltip => "tooltip",
1668                AriaRoleDefinitionKey::Tree => "tree",
1669                AriaRoleDefinitionKey::Treegrid => "treegrid",
1670                AriaRoleDefinitionKey::Treeitem => "treeitem",
1671                AriaRoleDefinitionKey::Widget => "widget",
1672                AriaRoleDefinitionKey::Window => "window",
1673            }
1674        )
1675    }
1676}
1677
1678#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
1679pub enum AriaNameFromSource {
1680    Author,
1681    Contents,
1682    Prohibited,
1683}
1684
1685#[derive(Clone, Debug)]
1686pub struct AriaRoleDefinition {
1687    pub r#abstract: bool,
1688    pub accessible_name_required: bool,
1689    pub base_concepts: Vec<AriaRoleRelation>,
1690    pub children_presentational: bool,
1691    pub name_from: Vec<AriaNameFromSource>,
1692    pub prohibited_props: Vec<AriaProperty>,
1693    pub props: AriaPropertyMap,
1694    pub related_concepts: Vec<AriaRoleRelation>,
1695    pub require_context_role: Vec<AriaRole>,
1696    pub required_context_role: Vec<AriaRole>,
1697    pub required_owned_elements: Vec<Vec<String>>,
1698    pub required_props: AriaPropertyMap,
1699    pub super_class: Vec<Vec<AriaRoleDefinitionSuperClass>>,
1700}
1701
1702#[derive(Clone, Debug)]
1703pub enum AriaRoleDefinitionSuperClass {
1704    AbstractRole(AriaAbstractRole),
1705    Role(AriaRole),
1706}
1707
1708#[derive(Debug, PartialEq, Eq)]
1709pub struct UnknownStateError;
1710
1711#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
1712pub enum AriaState {
1713    AriaBusy,
1714    AriaChecked,
1715    AriaDisabled,
1716    AriaExpanded,
1717    AriaGrabbed,
1718    AriaHidden,
1719    AriaInvalid,
1720    AriaPressed,
1721    AriaSelected,
1722}
1723
1724impl FromStr for AriaState {
1725    type Err = UnknownStateError;
1726
1727    fn from_str(s: &str) -> Result<Self, Self::Err> {
1728        match s {
1729            "aria-busy" => Ok(AriaState::AriaBusy),
1730            "aria-checked" => Ok(AriaState::AriaChecked),
1731            "aria-disabled" => Ok(AriaState::AriaDisabled),
1732            "aria-expanded" => Ok(AriaState::AriaExpanded),
1733            "aria-grabbed" => Ok(AriaState::AriaGrabbed),
1734            "aria-hidden" => Ok(AriaState::AriaHidden),
1735            "aria-invalid" => Ok(AriaState::AriaInvalid),
1736            "aria-pressed" => Ok(AriaState::AriaPressed),
1737            "aria-selected" => Ok(AriaState::AriaSelected),
1738            _ => Err(UnknownStateError),
1739        }
1740    }
1741}
1742
1743impl Display for AriaState {
1744    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1745        write!(
1746            f,
1747            "{}",
1748            match self {
1749                AriaState::AriaBusy => "aria-busy",
1750                AriaState::AriaChecked => "aria-checked",
1751                AriaState::AriaDisabled => "aria-disabled",
1752                AriaState::AriaExpanded => "aria-expanded",
1753                AriaState::AriaGrabbed => "aria-grabbed",
1754                AriaState::AriaHidden => "aria-hidden",
1755                AriaState::AriaInvalid => "aria-invalid",
1756                AriaState::AriaPressed => "aria-pressed",
1757                AriaState::AriaSelected => "aria-selected",
1758            }
1759        )
1760    }
1761}
1762
1763#[derive(Debug, PartialEq, Eq)]
1764pub struct UnknownPropertyError;
1765
1766#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
1767pub enum AriaProperty {
1768    AriaActivedescendant,
1769    AriaAtomic,
1770    AriaAutocomplete,
1771    AriaBraillelabel,
1772    AriaBrailleroledescription,
1773    AriaBusy,
1774    AriaChecked,
1775    AriaColcount,
1776    AriaColindex,
1777    AriaColspan,
1778    AriaControls,
1779    AriaCurrent,
1780    AriaDescribedby,
1781    AriaDescription,
1782    AriaDetails,
1783    AriaDisabled,
1784    AriaDropeffect,
1785    AriaErrormessage,
1786    AriaExpanded,
1787    AriaFlowto,
1788    AriaGrabbed,
1789    AriaHaspopup,
1790    AriaHidden,
1791    AriaInvalid,
1792    AriaKeyshortcuts,
1793    AriaLabel,
1794    AriaLabelledby,
1795    AriaLevel,
1796    AriaLive,
1797    AriaModal,
1798    AriaMultiline,
1799    AriaMultiselectable,
1800    AriaOrientation,
1801    AriaOwns,
1802    AriaPlaceholder,
1803    AriaPosinset,
1804    AriaPressed,
1805    AriaReadonly,
1806    AriaRelevant,
1807    AriaRequired,
1808    AriaRoledescription,
1809    AriaRowcount,
1810    AriaRowindex,
1811    AriaRowspan,
1812    AriaSelected,
1813    AriaSetsize,
1814    AriaSort,
1815    AriaValuemax,
1816    AriaValuemin,
1817    AriaValuenow,
1818    AriaValuetext,
1819}
1820
1821impl FromStr for AriaProperty {
1822    type Err = UnknownPropertyError;
1823
1824    fn from_str(s: &str) -> Result<Self, Self::Err> {
1825        match s {
1826            "aria-activedescendant" => Ok(AriaProperty::AriaActivedescendant),
1827            "aria-atomic" => Ok(AriaProperty::AriaAtomic),
1828            "aria-autocomplete" => Ok(AriaProperty::AriaAutocomplete),
1829            "aria-braillelabel" => Ok(AriaProperty::AriaBraillelabel),
1830            "aria-brailleroledescription" => Ok(AriaProperty::AriaBrailleroledescription),
1831            "aria-busy" => Ok(AriaProperty::AriaBusy),
1832            "aria-checked" => Ok(AriaProperty::AriaChecked),
1833            "aria-colcount" => Ok(AriaProperty::AriaColcount),
1834            "aria-colindex" => Ok(AriaProperty::AriaColindex),
1835            "aria-colspan" => Ok(AriaProperty::AriaColspan),
1836            "aria-controls" => Ok(AriaProperty::AriaControls),
1837            "aria-current" => Ok(AriaProperty::AriaCurrent),
1838            "aria-describedby" => Ok(AriaProperty::AriaDescribedby),
1839            "aria-description" => Ok(AriaProperty::AriaDescription),
1840            "aria-details" => Ok(AriaProperty::AriaDetails),
1841            "aria-disabled" => Ok(AriaProperty::AriaDisabled),
1842            "aria-dropeffect" => Ok(AriaProperty::AriaDropeffect),
1843            "aria-errormessage" => Ok(AriaProperty::AriaErrormessage),
1844            "aria-expanded" => Ok(AriaProperty::AriaExpanded),
1845            "aria-flowto" => Ok(AriaProperty::AriaFlowto),
1846            "aria-grabbed" => Ok(AriaProperty::AriaGrabbed),
1847            "aria-haspopup" => Ok(AriaProperty::AriaHaspopup),
1848            "aria-hidden" => Ok(AriaProperty::AriaHidden),
1849            "aria-invalid" => Ok(AriaProperty::AriaInvalid),
1850            "aria-keyshortcuts" => Ok(AriaProperty::AriaKeyshortcuts),
1851            "aria-label" => Ok(AriaProperty::AriaLabel),
1852            "aria-labelledby" => Ok(AriaProperty::AriaLabelledby),
1853            "aria-level" => Ok(AriaProperty::AriaLevel),
1854            "aria-live" => Ok(AriaProperty::AriaLive),
1855            "aria-modal" => Ok(AriaProperty::AriaModal),
1856            "aria-multiline" => Ok(AriaProperty::AriaMultiline),
1857            "aria-multiselectable" => Ok(AriaProperty::AriaMultiselectable),
1858            "aria-orientation" => Ok(AriaProperty::AriaOrientation),
1859            "aria-owns" => Ok(AriaProperty::AriaOwns),
1860            "aria-placeholder" => Ok(AriaProperty::AriaPlaceholder),
1861            "aria-posinset" => Ok(AriaProperty::AriaPosinset),
1862            "aria-pressed" => Ok(AriaProperty::AriaPressed),
1863            "aria-readonly" => Ok(AriaProperty::AriaReadonly),
1864            "aria-relevant" => Ok(AriaProperty::AriaRelevant),
1865            "aria-required" => Ok(AriaProperty::AriaRequired),
1866            "aria-roledescription" => Ok(AriaProperty::AriaRoledescription),
1867            "aria-rowcount" => Ok(AriaProperty::AriaRowcount),
1868            "aria-rowindex" => Ok(AriaProperty::AriaRowindex),
1869            "aria-rowspan" => Ok(AriaProperty::AriaRowspan),
1870            "aria-selected" => Ok(AriaProperty::AriaSelected),
1871            "aria-setsize" => Ok(AriaProperty::AriaSetsize),
1872            "aria-sort" => Ok(AriaProperty::AriaSort),
1873            "aria-valuemax" => Ok(AriaProperty::AriaValuemax),
1874            "aria-valuemin" => Ok(AriaProperty::AriaValuemin),
1875            "aria-valuenow" => Ok(AriaProperty::AriaValuenow),
1876            "aria-valuetext" => Ok(AriaProperty::AriaValuetext),
1877            _ => Err(UnknownPropertyError),
1878        }
1879    }
1880}
1881
1882impl Display for AriaProperty {
1883    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1884        write!(
1885            f,
1886            "{}",
1887            match self {
1888                AriaProperty::AriaActivedescendant => "aria-activedescendant",
1889                AriaProperty::AriaAtomic => "aria-atomic",
1890                AriaProperty::AriaAutocomplete => "aria-autocomplete",
1891                AriaProperty::AriaBraillelabel => "aria-braillelabel",
1892                AriaProperty::AriaBrailleroledescription => "aria-brailleroledescription",
1893                AriaProperty::AriaBusy => "aria-busy",
1894                AriaProperty::AriaChecked => "aria-checked",
1895                AriaProperty::AriaColcount => "aria-colcount",
1896                AriaProperty::AriaColindex => "aria-colindex",
1897                AriaProperty::AriaColspan => "aria-colspan",
1898                AriaProperty::AriaControls => "aria-controls",
1899                AriaProperty::AriaCurrent => "aria-current",
1900                AriaProperty::AriaDescribedby => "aria-describedby",
1901                AriaProperty::AriaDescription => "aria-description",
1902                AriaProperty::AriaDetails => "aria-details",
1903                AriaProperty::AriaDisabled => "aria-disabled",
1904                AriaProperty::AriaDropeffect => "aria-dropeffect",
1905                AriaProperty::AriaErrormessage => "aria-errormessage",
1906                AriaProperty::AriaExpanded => "aria-expanded",
1907                AriaProperty::AriaFlowto => "aria-flowto",
1908                AriaProperty::AriaGrabbed => "aria-grabbed",
1909                AriaProperty::AriaHaspopup => "aria-haspopup",
1910                AriaProperty::AriaHidden => "aria-hidden",
1911                AriaProperty::AriaInvalid => "aria-invalid",
1912                AriaProperty::AriaKeyshortcuts => "aria-keyshortcuts",
1913                AriaProperty::AriaLabel => "aria-label",
1914                AriaProperty::AriaLabelledby => "aria-labelledby",
1915                AriaProperty::AriaLevel => "aria-level",
1916                AriaProperty::AriaLive => "aria-live",
1917                AriaProperty::AriaModal => "aria-modal",
1918                AriaProperty::AriaMultiline => "aria-multiline",
1919                AriaProperty::AriaMultiselectable => "aria-multiselectable",
1920                AriaProperty::AriaOrientation => "aria-orientation",
1921                AriaProperty::AriaOwns => "aria-owns",
1922                AriaProperty::AriaPlaceholder => "aria-placeholder",
1923                AriaProperty::AriaPosinset => "aria-posinset",
1924                AriaProperty::AriaPressed => "aria-pressed",
1925                AriaProperty::AriaReadonly => "aria-readonly",
1926                AriaProperty::AriaRelevant => "aria-relevant",
1927                AriaProperty::AriaRequired => "aria-required",
1928                AriaProperty::AriaRoledescription => "aria-roledescription",
1929                AriaProperty::AriaRowcount => "aria-rowcount",
1930                AriaProperty::AriaRowindex => "aria-rowindex",
1931                AriaProperty::AriaRowspan => "aria-rowspan",
1932                AriaProperty::AriaSelected => "aria-selected",
1933                AriaProperty::AriaSetsize => "aria-setsize",
1934                AriaProperty::AriaSort => "aria-sort",
1935                AriaProperty::AriaValuemax => "aria-valuemax",
1936                AriaProperty::AriaValuemin => "aria-valuemin",
1937                AriaProperty::AriaValuenow => "aria-valuenow",
1938                AriaProperty::AriaValuetext => "aria-valuetext",
1939            }
1940        )
1941    }
1942}
1943
1944pub type AriaPropertyMap = HashMap<AriaProperty, Option<String>>;
1945
1946#[derive(Clone, Debug)]
1947pub struct AriaPropertyDefinition {
1948    pub r#type: AriaPropertyDefinitionType,
1949    pub values: Option<Vec<String>>,
1950    pub allow_undefined: Option<bool>,
1951}
1952
1953#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
1954pub enum AriaPropertyDefinitionType {
1955    String,
1956    Id,
1957    Idlist,
1958    Integer,
1959    Number,
1960    Boolean,
1961    Token,
1962    Tokenlist,
1963    Tristate,
1964}
1965
1966#[derive(Debug, PartialEq, Eq)]
1967pub struct UnknownTypeError;
1968
1969impl FromStr for AriaPropertyDefinitionType {
1970    type Err = UnknownTypeError;
1971
1972    fn from_str(s: &str) -> Result<Self, Self::Err> {
1973        match s {
1974            "string" => Ok(AriaPropertyDefinitionType::String),
1975            "id" => Ok(AriaPropertyDefinitionType::Id),
1976            "idlist" => Ok(AriaPropertyDefinitionType::Idlist),
1977            "integer" => Ok(AriaPropertyDefinitionType::Integer),
1978            "number" => Ok(AriaPropertyDefinitionType::Number),
1979            "boolean" => Ok(AriaPropertyDefinitionType::Boolean),
1980            "token" => Ok(AriaPropertyDefinitionType::Token),
1981            "tokenlist" => Ok(AriaPropertyDefinitionType::Tokenlist),
1982            "tristate" => Ok(AriaPropertyDefinitionType::Tristate),
1983            _ => Err(UnknownTypeError),
1984        }
1985    }
1986}
1987
1988impl Display for AriaPropertyDefinitionType {
1989    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1990        write!(
1991            f,
1992            "{}",
1993            match self {
1994                AriaPropertyDefinitionType::String => "string",
1995                AriaPropertyDefinitionType::Id => "id",
1996                AriaPropertyDefinitionType::Idlist => "idlist",
1997                AriaPropertyDefinitionType::Integer => "integer",
1998                AriaPropertyDefinitionType::Number => "number",
1999                AriaPropertyDefinitionType::Boolean => "boolean",
2000                AriaPropertyDefinitionType::Token => "token",
2001                AriaPropertyDefinitionType::Tokenlist => "tokenlist",
2002                AriaPropertyDefinitionType::Tristate => "tristate",
2003            }
2004        )
2005    }
2006}
2007
2008#[derive(Clone, Debug)]
2009pub struct AriaRoleRelation {
2010    pub module: Option<String>,
2011    pub concept: Option<AriaRoleRelationConcept>,
2012}
2013
2014#[derive(Clone, Debug, Eq, Hash, PartialEq)]
2015pub struct AriaRoleRelationConcept {
2016    pub name: String,
2017    pub attributes: Option<Vec<AriaRoleRelationConceptAttribute>>,
2018    pub constraints: Option<Vec<AriaRoleRelationConceptConstraint>>,
2019}
2020
2021#[derive(Clone, Debug, Eq, Hash, PartialEq)]
2022pub struct AriaRoleRelationConceptAttribute {
2023    pub name: String,
2024    pub value: Option<String>,
2025    pub constraints: Option<Vec<AriaRoleRelationConceptAttributeConstraint>>,
2026}
2027
2028#[derive(Debug, PartialEq, Eq)]
2029pub struct UnknownConstraintError;
2030
2031#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
2032pub enum AriaRoleRelationConceptAttributeConstraint {
2033    Undefined,
2034    Set,
2035    GreaterThanOne,
2036}
2037
2038impl FromStr for AriaRoleRelationConceptAttributeConstraint {
2039    type Err = UnknownConstraintError;
2040
2041    fn from_str(s: &str) -> Result<Self, Self::Err> {
2042        match s {
2043            "undefined" => Ok(AriaRoleRelationConceptAttributeConstraint::Undefined),
2044            "set" => Ok(AriaRoleRelationConceptAttributeConstraint::Set),
2045            ">1" => Ok(AriaRoleRelationConceptAttributeConstraint::GreaterThanOne),
2046            _ => Err(UnknownConstraintError),
2047        }
2048    }
2049}
2050
2051impl Display for AriaRoleRelationConceptAttributeConstraint {
2052    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2053        write!(
2054            f,
2055            "{}",
2056            match self {
2057                AriaRoleRelationConceptAttributeConstraint::Undefined => "undefined",
2058                AriaRoleRelationConceptAttributeConstraint::Set => "set",
2059                AriaRoleRelationConceptAttributeConstraint::GreaterThanOne => ">1",
2060            }
2061        )
2062    }
2063}
2064
2065#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
2066pub enum AriaRoleRelationConceptConstraint {
2067    ScopedToTheBodyElement,
2068    ScopedToTheMainElement,
2069    ScopedToASectioningRootElementOtherThanBody,
2070    ScopedToASectioningContentElement,
2071    DirectDescendantOfDocument,
2072    DirectDescendantOfOl,
2073    DirectDescendantOfUl,
2074    DirectDescendantOfMenu,
2075    DirectDescendantOfDetailsElementWithTheOpenAttributeDefined,
2076    AncestorTableElementHasTableRole,
2077    AncestorTableElementHasGridRole,
2078    AncestorTableElementHasTreegridRole,
2079    TheSizeAttributeValueIsGreaterThanOne,
2080    TheMultipleAttributeIsNotSetAndTheSizeAttributeDoesNotHaveAValueGreaterThanOne,
2081    TheListAttributeIsNotSet,
2082}
2083
2084impl FromStr for AriaRoleRelationConceptConstraint {
2085    type Err = UnknownConstraintError;
2086
2087    fn from_str(s: &str) -> Result<Self, Self::Err> {
2088        match s {
2089            "scoped to the body element" => Ok(AriaRoleRelationConceptConstraint::ScopedToTheBodyElement),
2090            "scoped to the main element" => Ok(AriaRoleRelationConceptConstraint::ScopedToTheMainElement),
2091            "scoped to a sectioning root element other than body" => Ok(AriaRoleRelationConceptConstraint::ScopedToASectioningRootElementOtherThanBody),
2092            "scoped to a sectioning content element" => Ok(AriaRoleRelationConceptConstraint::ScopedToASectioningContentElement),
2093            "direct descendant of document" => Ok(AriaRoleRelationConceptConstraint::DirectDescendantOfDocument),
2094            "direct descendant of ol" => Ok(AriaRoleRelationConceptConstraint::DirectDescendantOfOl),
2095            "direct descendant of ul" => Ok(AriaRoleRelationConceptConstraint::DirectDescendantOfUl),
2096            "direct descendant of menu" => Ok(AriaRoleRelationConceptConstraint::DirectDescendantOfMenu),
2097            "direct descendant of details element with the open attribute defined" => Ok(AriaRoleRelationConceptConstraint::DirectDescendantOfDetailsElementWithTheOpenAttributeDefined),
2098            "ancestor table element has table role" => Ok(AriaRoleRelationConceptConstraint::AncestorTableElementHasTableRole),
2099            "ancestor table element has grid role" => Ok(AriaRoleRelationConceptConstraint::AncestorTableElementHasGridRole),
2100            "ancestor table element has treegrid role" => Ok(AriaRoleRelationConceptConstraint::AncestorTableElementHasTreegridRole),
2101            "the size attribute value is greater than 1" => Ok(AriaRoleRelationConceptConstraint::TheSizeAttributeValueIsGreaterThanOne),
2102            "the multiple attribute is not set and the size attribute does not have a value greater than 1" => Ok(AriaRoleRelationConceptConstraint::TheMultipleAttributeIsNotSetAndTheSizeAttributeDoesNotHaveAValueGreaterThanOne),
2103            "the list attribute is not set" => Ok(AriaRoleRelationConceptConstraint::TheListAttributeIsNotSet),
2104            _ => Err(UnknownConstraintError),
2105        }
2106    }
2107}
2108
2109impl Display for AriaRoleRelationConceptConstraint {
2110    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2111        write!(
2112            f,
2113            "{}",
2114            match self {
2115                AriaRoleRelationConceptConstraint::ScopedToTheBodyElement => "scoped to the body element",
2116                AriaRoleRelationConceptConstraint::ScopedToTheMainElement => "scoped to the main element",
2117                AriaRoleRelationConceptConstraint::ScopedToASectioningRootElementOtherThanBody => "scoped to a sectioning root element other than body",
2118                AriaRoleRelationConceptConstraint::ScopedToASectioningContentElement => "scoped to a sectioning content element",
2119                AriaRoleRelationConceptConstraint::DirectDescendantOfDocument => "direct descendant of document",
2120                AriaRoleRelationConceptConstraint::DirectDescendantOfOl => "direct descendant of ol",
2121                AriaRoleRelationConceptConstraint::DirectDescendantOfUl => "direct descendant of ul",
2122                AriaRoleRelationConceptConstraint::DirectDescendantOfMenu => "direct descendant of menu",
2123                AriaRoleRelationConceptConstraint::DirectDescendantOfDetailsElementWithTheOpenAttributeDefined => "direct descendant of details element with the open attribute defined",
2124                AriaRoleRelationConceptConstraint::AncestorTableElementHasTableRole => "ancestor table element has table role",
2125                AriaRoleRelationConceptConstraint::AncestorTableElementHasGridRole => "ancestor table element has grid role",
2126                AriaRoleRelationConceptConstraint::AncestorTableElementHasTreegridRole => "ancestor table element has treegrid role",
2127                AriaRoleRelationConceptConstraint::TheSizeAttributeValueIsGreaterThanOne => "the size attribute value is greater than 1",
2128                AriaRoleRelationConceptConstraint::TheMultipleAttributeIsNotSetAndTheSizeAttributeDoesNotHaveAValueGreaterThanOne => "the multiple attribute is not set and the size attribute does not have a value greater than 1",
2129                AriaRoleRelationConceptConstraint::TheListAttributeIsNotSet => "the list attribute is not set",
2130            }
2131        )
2132    }
2133}
2134
2135#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
2136pub enum AriaQueryHtmlElement {
2137    A,
2138    Abbr,
2139    Acronym,
2140    Address,
2141    Applet,
2142    Area,
2143    Article,
2144    Aside,
2145    Audio,
2146    B,
2147    Base,
2148    Bdi,
2149    Bdo,
2150    Big,
2151    Blink,
2152    Blockquote,
2153    Body,
2154    Br,
2155    Button,
2156    Canvas,
2157    Caption,
2158    Center,
2159    Cite,
2160    Code,
2161    Col,
2162    Colgroup,
2163    Content,
2164    Data,
2165    Datalist,
2166    Dd,
2167    Del,
2168    Details,
2169    Dfn,
2170    Dialog,
2171    Dir,
2172    Div,
2173    Dl,
2174    Dt,
2175    Em,
2176    Embed,
2177    Fieldset,
2178    Figcaption,
2179    Figure,
2180    Font,
2181    Footer,
2182    Form,
2183    Frame,
2184    Frameset,
2185    H1,
2186    H2,
2187    H3,
2188    H4,
2189    H5,
2190    H6,
2191    Head,
2192    Header,
2193    Hgroup,
2194    Hr,
2195    Html,
2196    I,
2197    Iframe,
2198    Img,
2199    Input,
2200    Ins,
2201    Kbd,
2202    Keygen,
2203    Label,
2204    Legend,
2205    Li,
2206    Link,
2207    Main,
2208    Map,
2209    Mark,
2210    Marquee,
2211    Menu,
2212    Menuitem,
2213    Meta,
2214    Meter,
2215    Nav,
2216    Noembed,
2217    Noscript,
2218    Object,
2219    Ol,
2220    Optgroup,
2221    Option,
2222    Output,
2223    P,
2224    Param,
2225    Picture,
2226    Pre,
2227    Progress,
2228    Q,
2229    Rp,
2230    Rt,
2231    Rtc,
2232    Ruby,
2233    S,
2234    Samp,
2235    Script,
2236    Section,
2237    Select,
2238    Small,
2239    Source,
2240    Spacer,
2241    Span,
2242    Strike,
2243    Strong,
2244    Style,
2245    Sub,
2246    Summary,
2247    Sup,
2248    Table,
2249    Tbody,
2250    Td,
2251    Textarea,
2252    Tfoot,
2253    Th,
2254    Thead,
2255    Time,
2256    Title,
2257    Tr,
2258    Track,
2259    Tt,
2260    U,
2261    Ul,
2262    Var,
2263    Video,
2264    Wbr,
2265    Xmp,
2266}
2267
2268pub struct AriaDomDefinition {
2269    pub reserved: bool,
2270}