use crate::core::Element;
use crate::core::MacroDef;
use crate::error::Result;
use crate::template::Configuration;
use crate::template::TModel;
use std::collections::HashMap;
use std::rc::Rc;
pub struct Template {
pub name: String,
pub root: Vec<Element>,
pub macros: HashMap<String, MacroDef>,
pub configuration: Rc<Configuration>,
pub encoding: Option<String>,
pub ns_prefixes: HashMap<String, String>,
pub(crate) template_configuration: Option<crate::core::TemplateConfiguration>,
}
impl Template {
pub fn new(
name: String,
root: Vec<Element>,
macros: HashMap<String, MacroDef>,
configuration: Rc<Configuration>,
) -> Self {
Template {
name,
root,
macros,
configuration,
encoding: None,
ns_prefixes: HashMap::new(),
template_configuration: None,
}
}
pub fn process(&self, root: TModel, out: &mut dyn std::io::Write) -> Result<()> {
crate::core::render(self, root, out)
}
}