1个不稳定版本

0.27.0 2023年9月13日

#275模板引擎

Download history 162/week @ 2024-03-13 184/week @ 2024-03-20 174/week @ 2024-03-27 124/week @ 2024-04-03 102/week @ 2024-04-10 108/week @ 2024-04-17 83/week @ 2024-04-24 77/week @ 2024-05-01 134/week @ 2024-05-08 95/week @ 2024-05-15 72/week @ 2024-05-22 116/week @ 2024-05-29 135/week @ 2024-06-05 150/week @ 2024-06-12 90/week @ 2024-06-19 119/week @ 2024-06-26

502 每月下载量
23 个Crate中使用了(直接使用3个)

MIT/Apache

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

Crates Status Dependency Status

目标

  1. 兼容性。与 strict shopify/liquid 的不兼容性是 待修复的错误
  2. 灵活性。液体接受变体 来适应不同领域,我们希望遵循这种精神。
  3. 性能。在兼容性的范围内做到最好。

使用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