shopify-liquid
Liquid implementation for Node.js. All tags and filters listed in Shopify Documentation shall be implemented.
Shopify liquid is used by Jekyll and Github Pages.
Usage
Install:
npm install --save shopify-liquid
Parse and Render:
var Liquid = require('shopify-liquid');
var engine = Liquid();
engine.parseAndRender('{{name | capitalize}}', {name: 'alice'}); // Alice
Caching templates:
var tpl = engine.parse('{{name | capitalize}}');
engine.render(tpl, {name: 'alice'}); // Alice
Register Filters:
// Usage: {{ name | uppper }}
engine.registerFilter('upper', function(v){
return v.toUpperCase();
});
See existing filter implementations: https://github.com/harttle/shopify-liquid/blob/master/filters.js
Register Tags:
// Usage: {% upper name%}
engine.registerTag('upper', {
parse: function(tagToken, remainTokens) {
this.str = tagToken.args; // name
},
render: function(scope, hash) {
var str = Liquid.evalValue(this.str, scope); // 'alice'
return str.toUpperCase(); // 'Alice'
}
});
See existing tag implementations: https://github.com/harttle/shopify-liquid/blob/master/tags/
Operators
Documentation: https://shopify.github.io/liquid/basics/operators/
==, !=, >, <, >=, <=, or, and, contains.
Tags
Documentation: https://shopify.github.io/liquid/basics/introduction/#tags
- case/when Document Source Test
- if Document Source Test
- unless Document Source Test
- elsif Document/else Source Test
- for Document Source Test
- break Document Source Test
- continue Document Source Test
- for Document: limit,offset,range,reversed) Source Test
- cycle Document Source Test
- cycle Document: group) Source Test
- tablerow Document Source Test
- tablerow Document: cols,limit,offset,range Source Test
- assign Document Source Test
- capture Document Source Test
- increment Document Source Test
- decrement Document Source Test
- raw Document Source Test
- comment Document Source Test
Filters
Documentation: https://shopify.github.io/liquid/basics/introduction/#filters
- abs Document Source Test
- append Document Source Test
- capitalize Document Source Test
- ceil Document Source Test
- date Document Source Test
- default Document Source Test
- divided_by Document Source Test
- downcase Document Source Test
- escape Document Source Test
- escape_once Document Source Test
- first Document Source Test
- floor Document Source Test
- join Document Source Test
- last Document Source Test
- lstrip Document Source Test
- map Document Source Test
- minus Document Source Test
- modulo Document Source Test
- newline_to_br Document Source Test
- plus Document Source Test
- prepend Document Source Test
- remove Document Source Test
- remove_first Document Source Test
- replace Document Source Test
- replace_first Document Source Test
- reverse Document Source Test
- round Document Source Test
- rstrip Document Source Test
- size Document Source Test
- slice Document Source Test
- sort Document Source Test
- split Document Source Test
- strip Document Source Test
- strip_html Document Source Test
- strip_newlines Document Source Test
- times Document Source Test
- truncate Document Source Test
- truncatewords Document Source Test
- uniq Document Source Test
- upcase Document Source Test
- url_encode Document Source Test
Differences from Shopify Liquid
url_encodeis based onencodeURIComponent,will be converted to%20.
Async Support
harttle/shopify-liquid do NOT support async rendering, this is by design.
The primary principle of harttle/shopify-liquid is EASY TO EXTEND. Async rendering introduces extra complexity in both implementation and extension.
For template-driven projects, checkout these Liquid-like engines:
