use crate::*;
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlRoot {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) children: Vec<HtmlNode>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlFor {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) pattern: proc_macro2::TokenStream,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) iterable: Expr,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) body: Vec<HtmlNode>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlIf {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) branches: Vec<(Option<Expr>, Vec<HtmlNode>)>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlAttrIf {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) branches: Vec<(Option<Expr>, Expr)>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlMatch {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) scrutinee: Expr,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) arms: Vec<(proc_macro2::TokenStream, Vec<HtmlNode>)>,
}
#[derive(Clone, Data, Debug, New)]
pub(crate) struct HtmlElement {
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) tag: Ident,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) tag_name: String,
#[get(pub(crate), type(copy))]
#[set(pub(crate))]
pub(crate) is_ident_tag: bool,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) attributes: Vec<(Ident, HtmlAttrValue)>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) children: Vec<HtmlNode>,
}