项目作者: cobalt-org

项目描述 :
Liquid templating for Rust
高级语言: Rust
项目地址: git://github.com/cobalt-org/liquid-rust.git
创建时间: 2014-11-09T08:29:49Z
项目社区:https://github.com/cobalt-org/liquid-rust

开源协议:MIT License

下载


liquid-rust

Liquid templating for Rust

Crates Status

Goals:

  1. Conformant. Incompatibilities with strict shopify/liquid are bugs to be fixed.
  2. Flexible. Liquid embraces variants for different domains and we want to follow in that spirit.
  3. Performant. Do the best we can within what is conformant.

Example applications using liquid-rust:

Usage

To include liquid in your project add the following to your Cargo.toml:

  1. $ cargo add liquid

Example:

  1. let template = liquid::ParserBuilder::with_stdlib()
  2. .build().unwrap()
  3. .parse("Liquid! {{num | minus: 2}}").unwrap();
  4. let globals = liquid::object!({
  5. "num": 4f64
  6. });
  7. let output = template.render(&globals).unwrap();
  8. assert_eq!(output, "Liquid! 2".to_string());

You can find a reference on Liquid syntax here.

Customizing Liquid

Language Variants

By default, liquid-rust has no filters, tags, or blocks. You can enable the
default set or pick and choose which to add to suite your application.

Create your own filters

Creating your own filters is very easy. Filters are simply functions or
closures that take an input Value and a Vec<Value> of optional arguments
and return a Value to be rendered or consumed by chained filters.

See
filters/
for what a filter implementation looks like. You can then register it by
calling liquid::ParserBuilder::filter.

Create your own tags

Tags are made up of two parts, the initialization and the rendering.

Initialization happens when the parser hits a Liquid tag that has your
designated name. You will have to specify a function or closure that will
then return a Renderable object to do the rendering.

See
include_tag.rs
for what a tag implementation looks like. You can then register it by calling liquid::ParserBuilder::tag.

Create your own tag blocks

Blocks work very similar to Tags. The only difference is that blocks contain other
markup, which is why block initialization functions take another argument, a list
of Elements that are inside the specified block.

See
comment_block.rs
for what a block implementation looks like. You can then register it by
calling liquid::ParserBuilder::block.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual-licensed as above, without any additional terms or
conditions.