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/对应 Javafreemarker.template.utility包——去包名映射) - value
- 动态值类型 —— 模板表达式中的数值/日期/布尔表示
(对应 Java
Number/Boolean/Date家族;语义见 docs/06 §3) - xml
- XML 节点模型 —— 对应 Java
freemarker.ext.dom.NodeModel(roxmltree 只读 DOM)