use syn::__private::quote::quote;
use syn::__private::TokenStream2;
use syn::spanned::Spanned;
use crate::fns::html::{
tmp,
HTMLMacro,
HTMLMacroParserError,
HTMLMacroParserErrorKind,
Result,
};
impl HTMLMacro {
pub fn handle_if_attribute(
&self,
tag_name: &str,
tag_attrs: &[TokenStream2],
children: &[TokenStream2],
attr: &rstml::node::KeyedAttribute,
) -> Result<TokenStream2> {
let new_element = tmp::create_element(tag_name, tag_attrs, children);
let val = attr.value().ok_or_else(|| {
HTMLMacroParserError {
span: attr.span(),
kind: HTMLMacroParserErrorKind::BooleanExprExpected,
}
})?;
Ok(quote! {
Node::create_fragment(
if #val { vec![#new_element] } else { vec![] }
)
})
}
}