use crate::codegen::loader_html::Element;
use proc_macro2::TokenStream;
pub mod bind_tag_node;
pub mod break_tag_node;
pub mod choose_tag_node;
pub mod continue_tag_node;
pub mod delete_tag_node;
pub mod foreach_tag_node;
pub mod if_tag_node;
pub mod include_tag_node;
pub mod insert_tag_node;
pub mod mapper_tag_node;
pub mod otherwise_tag_node;
pub mod select_tag_node;
pub mod set_tag_node;
pub mod sql_tag_node;
pub mod trim_tag_node;
pub mod update_tag_node;
pub mod when_tag_node;
pub mod where_tag_node;
pub use bind_tag_node::BindTagNode;
pub use break_tag_node::BreakTagNode;
pub use choose_tag_node::ChooseTagNode;
pub use continue_tag_node::ContinueTagNode;
pub use delete_tag_node::DeleteTagNode;
pub use foreach_tag_node::ForeachTagNode;
pub use if_tag_node::IfTagNode;
pub use include_tag_node::IncludeTagNode;
pub use insert_tag_node::InsertTagNode;
pub use mapper_tag_node::MapperTagNode;
pub use otherwise_tag_node::OtherwiseTagNode;
pub use select_tag_node::SelectTagNode;
pub use set_tag_node::SetTagNode;
pub use sql_tag_node::SqlTagNode;
pub use trim_tag_node::TrimTagNode;
pub use update_tag_node::UpdateTagNode;
pub use when_tag_node::WhenTagNode;
pub use where_tag_node::WhereTagNode;
pub struct NodeContext<'a, FChildParser>
where
FChildParser: FnMut(&[Element], &mut TokenStream, &mut Vec<String>, &str) -> TokenStream,
{
pub methods: &'a mut TokenStream, pub fn_name: &'a str, pub child_parser: FChildParser, }
impl<'a, FChildParser> NodeContext<'a, FChildParser>
where
FChildParser: FnMut(&[Element], &mut TokenStream, &mut Vec<String>, &str) -> TokenStream,
{
pub fn parse_children(
&mut self,
children: &[Element],
ignore: &mut Vec<String>,
) -> TokenStream {
(self.child_parser)(children, self.methods, ignore, self.fn_name)
}
}
pub trait HtmlAstNode {
fn node_tag_name() -> &'static str;
fn from_element(element: &Element) -> Self
where
Self: Sized;
fn generate_tokens<FChildParser>(
&self,
context: &mut NodeContext<FChildParser>,
ignore: &mut Vec<String>,
) -> TokenStream
where
FChildParser: FnMut(&[Element], &mut TokenStream, &mut Vec<String>, &str) -> TokenStream;
}