1use std::fmt::Display;
2
3#[derive(Debug, PartialEq, Clone)]
4pub enum Token {
5 TagOpen(String),
6 TagClose(String),
7 SelfClosingTag(String),
8 AttributeName(String),
9 AttributeValue(String),
10 Text(String),
11 Eof,
12}
13
14impl Display for Token {
15 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
16 match self {
17 Token::TagOpen(name) => write!(f, "<{}>", name),
18 Token::TagClose(name) => write!(f, "</{}>", name),
19 Token::SelfClosingTag(name) => write!(f, "<{} />", name),
20 Token::AttributeName(name) => write!(f, "{}", name),
21 Token::AttributeValue(value) => write!(f, "\"{}\"", value),
22 Token::Text(text) => write!(f, "{}", text),
23 Token::Eof => write!(f, "EOF"),
24 }
25 }
26}