brick-liquid

3.2.0 • Public • Published

NPM version Build Status Coverage Status Dependency manager

Liquid Template Engine for Brick.js, implemented with [sirlantis/liquid-node][sirlantis/liquid-node].

Installation

npm install -S brick-liquid

Set template engine for brick.js

var brickJs = require('brick.js');
var Liquid = require('brick-liquid');
 
var brk = brickJs();
 
var liquid = Liquid({
    cache: false    // disabled by default, see below
});
 
brk.engine('.liquid', liquid);   // set liquid engine for .liquid file 
brk.engine('.html', liquid);     // set liquid engine for .html file
 
app.use('/', brk.express);

Include Modules(Partials)

In Brick.js, partials are organized as modules, Sub-modules are imported by include. For example:

<html>
<body>
  <div class="container">
    {%include "user-list"%}
  </div>
</body>
</html>

Above template will import module user-list in root directory with local context.

Layouts

Brick-liquid render is implemented asyncly to support template layout.

Module homepage:

{%layout 'default'%}
<div class="container"> Hello! </div>

Module default:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>{{title}}</title>
  <meta charset="UTF-8">
</head>
<body> {% block %} </body>
</html>

homepage will be rendered and then replace {% block %} declaration in default. In the meantime, the local context within homepage will be passed into default.

Options

cache

Type: Bool

Default: false

If set to true, all templates will be loaded only once (for production usage). Otherwise, template file will be reloaded on every HTTP request.

Registration of New Filter

Brick-liquid is implemented with harttle/liquidjs internaly. And the liquid object defined above is compatible with harttle/liquidjs engine object.

Javascript:

liquid.registerFilter('upper', function(v){
  return v.toUpperCase();
});

Template:

<h3>{{ 'alice' | upper }}</h3>

Output:

<h3>ALICE</h3>

Registration of New Tag

Registration of new tag is compatible with harttle/liquidjs.

Javascript:

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'
    }
});

Template:

{% upper 'alice' %}

Output:

ALICE

Readme

Keywords

none

Package Sidebar

Install

npm i brick-liquid

Weekly Downloads

21

Version

3.2.0

License

ISC

Last publish

Collaborators

  • harttle