use std::collections::HashMap;
use crate::expr::common::ExpressionManager;
use crate::syntax::OperatorSyntax;
use crate::template::default_state;
use crate::ValueFormatter;
pub struct TemplateConfig {
pub primitives: HashMap<String, HashMap<usize, Box<ValueFormatter>>>,
pub expr_manager: ExpressionManager,
pub block_symbol: (String, String),
pub operators: Vec<OperatorSyntax>,
}
impl TemplateConfig {
pub fn get_operator_by_start(&self, src: &str) -> Option<&OperatorSyntax> {
self.operators
.iter()
.find(|item| src.starts_with(&format!("{} ", item.get_start_tag())))
}
}
#[cfg(any(test))]
pub(crate) fn init_log() {
let _ = simple_logger::init_with_level(log::Level::Debug);
}
#[cfg(not(test))]
pub(crate) fn init_log() {}
impl Default for TemplateConfig {
fn default() -> Self {
init_log();
TemplateConfig {
primitives: HashMap::new(),
expr_manager: ExpressionManager::default(),
block_symbol: (String::from("{{"), String::from("}}")),
operators: default_state(),
}
}
}