thymeleaf 0.1.0-beta.1

A framework-neutral Thymeleaf-compatible dynamic template engine for Rust
use std::sync::Arc;

use crate::engine::ITemplateHandler;
use crate::templateparser::{ITemplateParser, TemplateParserError};
use crate::templateresource::ITemplateResource;
use crate::util::Utf16String;
use crate::{IEngineConfiguration, TemplateMode};

use super::AbstractTextTemplateParser;

/// CSS 模式高层模板 Parser。
///
/// 对应 Java: `org.thymeleaf.templateparser.text.CSSTemplateParser`。
pub struct CSSTemplateParser {
    delegate: AbstractTextTemplateParser,
}

impl CSSTemplateParser {
    /// 创建启用 CSS 注释与字面量扫描的 Parser。
    /// 对应 Java 语义:`CSSTemplateParser` 的 `new` 行为(Rust 侧辅助/私有路径)。
    #[must_use]
    pub fn new(buffer_pool_size: i32, buffer_size: i32, standard_dialect_present: bool) -> Self {
        Self {
            delegate: AbstractTextTemplateParser::new(
                buffer_pool_size,
                buffer_size,
                true,
                standard_dialect_present,
            ),
        }
    }
}

impl ITemplateParser for CSSTemplateParser {
    fn parse_standalone(
        &self,
        configuration: Arc<dyn IEngineConfiguration>,
        owner_template: Option<&Utf16String>,
        template: &Utf16String,
        template_selectors: Option<&[Utf16String]>,
        resource: Arc<dyn ITemplateResource>,
        template_mode: TemplateMode,
        use_decoupled_logic: bool,
        handler: Box<dyn ITemplateHandler>,
    ) -> Result<(), TemplateParserError> {
        self.delegate.parse_standalone(
            configuration,
            owner_template,
            template,
            template_selectors,
            resource,
            template_mode,
            use_decoupled_logic,
            handler,
        )
    }

    fn parse_string(
        &self,
        configuration: Arc<dyn IEngineConfiguration>,
        owner_template: &Utf16String,
        template: &Utf16String,
        line_offset: i32,
        col_offset: i32,
        template_mode: TemplateMode,
        handler: Box<dyn ITemplateHandler>,
    ) -> Result<(), TemplateParserError> {
        self.delegate.parse_string(
            configuration,
            owner_template,
            template,
            line_offset,
            col_offset,
            template_mode,
            handler,
        )
    }
}