Liquid templating for Rust Goals: Conformant. Incompatibilities with strict shopify/liquid are bugs to be fixed. Flexible. Liquid embraces variants for different domains and we want to follow in that spirit. Performant. Do the best we can within what is conformant. Example applications using liquid-rust: cobalt: static site generator. cargo-tarball: crate bin packaging tool. cargo-generate: crate generator from templates. Mandy: A hypersonic, easy-to-use, performant static-site generator. Usage To include liquid in your project add the following to your Cargo.toml: $ cargo add liquid Example: let template = liquid :: ParserBuilder :: with_stdlib ( ) . build ( ) . unwrap ( ) . parse ( "Liquid! {{num | minus: 2}}" ) . unwrap ( ) ; let globals = liquid :: object! ( { "num" : 4f64 } ) ; let output = template . render ( & globals ) . unwrap ( ) ; 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 suit 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 t...
First seen: 2025-12-15 20:59
Last seen: 2025-12-15 22:59