use crate::attr::Attributes;
use crate::span::Span;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Token {
Doctype {
name: String,
public_id: Option<String>,
system_id: Option<String>,
span: Span,
},
StartTag {
name: String,
attributes: Attributes,
self_closing: bool,
span: Span,
},
EndTag {
name: String,
span: Span,
},
Text {
content: String,
span: Span,
},
Comment {
text: String,
span: Span,
},
Eof {
span: Span,
},
}
impl Token {
#[must_use]
pub fn span(&self) -> Span {
match self {
Self::Doctype { span, .. }
| Self::StartTag { span, .. }
| Self::EndTag { span, .. }
| Self::Text { span, .. }
| Self::Comment { span, .. }
| Self::Eof { span } => *span,
}
}
}