Skip to main content

Crate freemarker

Crate freemarker 

Source
Expand description

freemarker —— Apache FreeMarker 语义兼容的 Rust 模板引擎(freemarker-core 迁移)

迁移基线:apache/freemarker 2.3-gae 分支 commit 7926e97(incompatibleImprovements 2.3.34)。 详细设计见 docs/(02 架构、03 解析器、04 渲染引擎、05 内建函数、06 数据模型、07 配置缓存)。

模块布局对齐 Java 包:freemarker.core → core/、freemarker.template → template/、 freemarker.cache → cache/、freemarker.template.utility → utility/。

Re-exports§

pub use core::eval;
pub use core::eval;
pub use core::exec;
pub use core::Environment;
pub use error::Result;
pub use error::TemplateError;
pub use template::Configuration;
pub use template::TModel;
pub use template::Template;

Modules§

builtins
内建函数注册表 —— 对应 freemarker.core.BuiltInsFor*.java(docs/05,133 个 BI) 分派顺序(eval.rs):① builtins::lookup 注册表(本模块)→ ② eval.rs 内建集 → ③ Unknown built-in: ?{name}。本模块只注册 eval.rs 内建集未覆盖的名称(避免遮蔽); ?replace/?split/?matches 因需要 flags 参数(Java RegexpHelper),从 eval.rs 迁入本模块。
cache
模板加载与缓存 —— 对应 Java freemarker.cache.* (全量语义见 docs/07 §4;一文件一 Java 对象)
core
对应 Java freemarker.core 包:解析器产物、渲染引擎、算术引擎、设置项
error
错误体系(对应 Java freemarker.template.TemplateException 层级)
ext
对应 Java freemarker.ext 包
parser
解析器 —— 对应 FTL.jj → FMParser/FMParserTokenManager(docs/03)
span
源码位置标记(对应 Java TemplateElement.getBeginLine()/getBeginColumn())。
template
对应 Java freemarker.template 包:数据模型、配置、模板 (template/utility/ 对应 Java freemarker.template.utility 包——去包名映射)
value
动态值类型 —— 模板表达式中的数值/日期/布尔表示 (对应 Java Number/Boolean/Date 家族;语义见 docs/06 §3)
xml
XML 节点模型 —— 对应 Java freemarker.ext.dom.NodeModel(roxmltree 只读 DOM)