thymeleaf 0.1.0-beta.1

A framework-neutral Thymeleaf-compatible dynamic template engine for Rust
use crate::processor::IProcessor;

use super::{MatchingAttributeName, MatchingElementName};

/// 在元素名称和/或属性名称上执行的 Processor 基础合同。
///
/// 对应 Java: `org.thymeleaf.processor.element.IElementProcessor`。
///
/// 至少一个匹配名称应非 null;该不变量由具体抽象 Processor 构造器校验。
pub trait IElementProcessor: IProcessor + Send + Sync {
    /// 返回可选 Tag Processor capability。
    fn as_element_tag_processor(&self) -> Option<&dyn super::IElementTagProcessor> {
        None
    }

    /// 返回可选 Model Processor capability。
    fn as_element_model_processor(&self) -> Option<&dyn super::IElementModelProcessor> {
        None
    }

    /// 返回可空匹配元素名称规则。
    fn get_matching_element_name(&self) -> Option<&MatchingElementName>;

    /// 返回可空匹配属性名称规则。
    fn get_matching_attribute_name(&self) -> Option<&MatchingAttributeName>;
}