Skip to content

brick-js/brick-liquid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Liquid template engine wrapper for Brick.js

Resources

Stars

Watchers

Forks

Packages

No packages published