swc_xml_ast/
token.rs

1#[cfg(feature = "serde-impl")]
2use serde::{Deserialize, Serialize};
3use swc_atoms::Atom;
4use swc_common::{ast_node, EqIgnoreSpan, Span};
5
6#[ast_node("TokenAndSpan")]
7#[derive(Eq, Hash, EqIgnoreSpan)]
8pub struct TokenAndSpan {
9    pub span: Span,
10    pub token: Token,
11}
12
13#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, EqIgnoreSpan)]
14#[cfg_attr(feature = "serde-impl", derive(Serialize, Deserialize))]
15pub struct AttributeToken {
16    pub span: Span,
17    pub name: Atom,
18    pub raw_name: Option<Atom>,
19    pub value: Option<Atom>,
20    pub raw_value: Option<Atom>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Hash, EqIgnoreSpan)]
24#[cfg_attr(feature = "serde-impl", derive(Serialize, Deserialize))]
25pub enum Token {
26    Doctype {
27        // Name
28        name: Option<Atom>,
29        // Public identifier
30        public_id: Option<Atom>,
31        // System identifier
32        system_id: Option<Atom>,
33        // Raw value
34        raw: Option<Atom>,
35    },
36    StartTag {
37        tag_name: Atom,
38        attributes: Vec<AttributeToken>,
39    },
40    EndTag {
41        tag_name: Atom,
42        attributes: Vec<AttributeToken>,
43    },
44    EmptyTag {
45        tag_name: Atom,
46        attributes: Vec<AttributeToken>,
47    },
48    Comment {
49        data: Atom,
50        raw: Atom,
51    },
52    Character {
53        value: char,
54        raw: Option<Atom>,
55    },
56    ProcessingInstruction {
57        target: Atom,
58        data: Atom,
59    },
60    Cdata {
61        data: Atom,
62        raw: Atom,
63    },
64    Eof,
65}