Skip to main content

oak_xml/parser/
element_type.rs

1use oak_core::{ElementType, Parser, UniversalElementRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
7pub enum XmlElementType {
8    Root,
9    Prolog,
10    Element,
11    StartTag,
12    EndTag,
13    SelfClosingTag,
14    Attribute,
15    Text,
16    Comment,
17    CData,
18}
19
20impl ElementType for XmlElementType {
21    type Role = UniversalElementRole;
22
23    fn role(&self) -> Self::Role {
24        match self {
25            _ => UniversalElementRole::None,
26        }
27    }
28}
29
30impl From<crate::lexer::token_type::XmlTokenType> for XmlElementType {
31    fn from(token: crate::lexer::token_type::XmlTokenType) -> Self {
32        unsafe { std::mem::transmute(token) }
33    }
34}