use syn::punctuated::Punctuated;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DashIdent(pub Punctuated<syn::Ident, syn::Token![-]>);
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Doctype;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Value {
LitStr(syn::LitStr),
Expr(syn::Expr),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Attr {
pub key: DashIdent,
pub value: Value,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Tag {
Opening {
name: DashIdent,
attrs: Vec<Attr>,
void_slash: Option<syn::Token![/]>,
},
Closing {
name: DashIdent,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Node {
Doctype(Doctype),
Tag(Tag),
Value(Value),
}