thymeleaf 0.1.0-beta.1

A framework-neutral Thymeleaf-compatible dynamic template engine for Rust
use crate::context::{IContext, ITemplateContext};
use crate::model::IModel;
use crate::util::{TemplateWriter, Utf16String};
use crate::{IThrottledTemplateProcessor, TemplateMode, TemplateSpec};

use super::TemplateData;

/// TemplateManager 对配置层公开的解析与处理合同。
///
/// 对应 Java: `org.thymeleaf.engine.TemplateManager` 的可调用方法集合。
pub trait ITemplateManager {
    /// 清理解析缓存和解耦逻辑缓存。
    fn clear_caches(&self);
    /// 清理指定模板的缓存项。
    fn clear_caches_for(&self, template: &Utf16String);
    /// 独立解析模板。
    fn parse_standalone(
        &self,
        context: &dyn ITemplateContext,
        template: &Utf16String,
        template_selectors: Option<&[Utf16String]>,
        template_mode: Option<TemplateMode>,
        use_cache: bool,
        fail_if_not_exists: bool,
    ) -> Result<Option<Box<dyn IModel>>, crate::exceptions::TemplateInputException>;
    /// 在已知 owner 数据下解析字符串片段。
    fn parse_string(
        &self,
        owner_template_data: &TemplateData,
        template: &Utf16String,
        line_offset: i32,
        col_offset: i32,
        template_mode: Option<TemplateMode>,
        use_cache: bool,
    ) -> Result<Box<dyn IModel>, crate::exceptions::TemplateInputException>;
    /// 处理已解析模型。
    fn process(
        &self,
        template: &dyn IModel,
        context: &dyn ITemplateContext,
        writer: Box<dyn TemplateWriter>,
    ) -> Result<(), crate::exceptions::TemplateProcessingException>;
    /// 解析并同步处理 TemplateSpec。
    fn parse_and_process(
        &self,
        template_spec: &TemplateSpec,
        context: &dyn IContext,
        writer: Box<dyn TemplateWriter>,
    ) -> Result<(), crate::exceptions::TemplateProcessingException>;
    /// 解析并创建节流处理器。
    fn parse_and_process_throttled(
        &self,
        template_spec: &TemplateSpec,
        context: &dyn IContext,
    ) -> Result<Box<dyn IThrottledTemplateProcessor>, crate::exceptions::TemplateProcessingException>;
}