freemarker 0.1.1

Apache FreeMarker 语义兼容的 Rust 模板引擎(freemarker-core 迁移)
Documentation
//! 深度解包 —— 对应 Java `freemarker.template.utility.DeepUnwrap`
//! (Java :47- 行:模板模型 → 原生对象递归解包;v1 实现位于
//! `ObjectWrapper::unwrap`(SimpleObjectWrapper 的递归展开,
//! 对应 Java DeepUnwrap.unwrap :100-176)——本类型为公开入口)

use crate::template::{DynValue, ObjectWrapper, TModel, SIMPLE_WRAPPER};

/// 深度解包(对应 DeepUnwrap.java)
pub struct DeepUnwrap;

impl DeepUnwrap {
    /// 解包(Java `unwrap(TemplateModel)`;无法展开 → Err)
    pub fn unwrap(model: &TModel) -> crate::error::Result<DynValue> {
        SIMPLE_WRAPPER.unwrap(model)
    }

    /// 宽松解包(Java `permissiveUnwrap`;无法展开 → Null)
    pub fn permissive_unwrap(model: &TModel) -> DynValue {
        SIMPLE_WRAPPER.unwrap(model).unwrap_or(DynValue::Null)
    }
}