1个不稳定版本
0.27.0 | 2023年9月13日 |
---|
#275 在 模板引擎 中
502 每月下载量
在 23 个Crate中使用了(直接使用3个)
445KB
11K SLoC
loose-liquid-rust
********************************************************************************
* NOTE: THIS IS A TEMPORARY FORK OF LIQUID-RUST *
* *
* Once either of the following PRs (or suitable) lands this will be deprecated *
* - https://github.com/cobalt-org/liquid-rust/pull/496 *
* - https://github.com/cobalt-org/liquid-rust/pull/492 *
********************************************************************************
以下为原始README
液体模板 用于Rust
目标
- 兼容性。与 strict shopify/liquid 的不兼容性是 待修复的错误。
- 灵活性。液体接受变体 来适应不同领域,我们希望遵循这种精神。
- 性能。在兼容性的范围内做到最好。
使用liquid-rust的示例应用程序
- cobalt:静态站点生成器。
- cargo-tarball:Crate二进制打包工具。
- cargo-generate:从模板生成Crate的工具。
- Mandy:一个高速、易于使用、性能出色的静态站点生成器。
使用方法
要将液体添加到您的项目中,请在Cargo.toml中添加以下内容
$ cargo add liquid
示例
let template = liquid::ParserBuilder::with_stdlib()
.build().unwrap()
.parse("Liquid! {{num | minus: 2}}").unwrap();
let mut globals = liquid::object!({
"num": 4f64
});
let output = template.render(&globals).unwrap();
assert_eq!(output, "Liquid! 2".to_string());
您可以在这里找到关于Liquid语法的参考。
自定义液体
语言变体
默认情况下,liquid-rust
没有过滤器、标签或块。您可以启用默认集或选择添加到应用程序中。
创建自己的过滤器
创建自己的过滤器非常简单。过滤器只是接受输入 Value
和一个 Vec<Value>
可选参数的函数或闭包,并返回一个 Value
,以供渲染或由链式过滤器消费。
请参阅 filters/ 了解过滤器实现的外观。然后您可以通过调用 liquid::ParserBuilder::filter
来注册它。
创建自己的标签
标签由两个部分组成:初始化和渲染。
初始化发生在解析器遇到具有您指定名称的Liquid标签时。您需要指定一个函数或闭包,然后它将返回一个用于渲染的Renderable
对象。
有关标签实现的外观,请参阅include_tag.rs。然后可以通过调用liquid::ParserBuilder::tag
来注册它。
创建自己的标签块
块与标签非常相似。唯一的区别是块包含其他标记,这就是为什么块初始化函数需要另一个参数,即指定块内的Element
列表。
有关块实现的外观,请参阅comment_block.rs。然后可以通过调用liquid::ParserBuilder::block
来注册它。
依赖项
~6–8MB
~146K SLoC