Liquid templating for Rust
To include liquid in your project add the following to your Cargo.toml:
[dependencies]
liquid = "0.14"
Now you can use the crate in your code:
extern crate liquid;
Example:
extern crate liquid;
let template = liquid::ParserBuilder::with_liquid()
.build()
.parse("Liquid! {{num | minus: 2}}").unwrap();
let mut globals = liquid::Object::new();
globals.insert("num".to_owned(), liquid::Value::scalar(4f32));
let output = template.render(&globals).unwrap();
assert_eq!(output, "Liquid! 2".to_string());
You can find a reference on Liquid syntax here.
Cache block ( File and Redis ) : https://github.com/FerarDuanSednan/liquid-rust-cache
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.rs
for what a filter implementation looks like. You can then register it by
calling liquid::ParserBuilder::filter
.
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
.
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 Element
s 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
.