2016-06-23 18:58:57 +08:00
2016-06-20 01:10:43 +08:00
2016-06-23 18:58:57 +08:00
2016-06-13 18:38:43 +08:00
2016-06-16 01:05:08 +08:00
2016-06-13 18:38:43 +08:00
2016-06-17 14:59:30 +08:00
2016-06-18 23:18:46 +08:00
2016-06-18 23:18:46 +08:00
2016-06-18 23:18:46 +08:00
2016-06-20 00:34:54 +08:00
2016-06-19 00:46:29 +08:00
2016-06-13 15:39:31 +08:00
2016-06-23 18:58:57 +08:00
2016-06-20 01:10:43 +08:00
2016-06-23 18:58:57 +08:00
2016-06-20 00:34:54 +08:00
2016-06-17 08:39:23 +08:00
2016-06-15 22:37:24 +08:00
2016-06-23 18:58:57 +08:00
2016-06-23 18:58:57 +08:00

shopify-liquid

NPM version Build Status Coverage Status Dependency manager

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

Tag Document Source Test
case/when Document Source Test
if Document Source Test
unless Document Source Test
elsif/else Document Source Test
for Document Source Test
break Document Source Test
continue Document Source Test
for: limit,offset,range,reversed Document Source Test
cycle Document Source Test
cycle: group Document Source Test
tablerow Document Source Test
tablerow: cols,limit,offset,range Document 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

Filter Document Source Test
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_encode is based on encodeURIComponent, 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:

S
Description
No description provided
Readme MIT
65 MiB
Languages
TypeScript 94.8%
JavaScript 3.8%
Liquid 0.7%
SWIG 0.3%
Handlebars 0.3%