3.2.0 • Published 8 years ago

brick-liquid v3.2.0

Weekly downloads
4
License
ISC
Repository
github
Last release
8 years ago

NPM version Build Status Coverage Status Dependency manager

Liquid Template Engine for Brick.js, implemented with 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
3.2.0

8 years ago

3.1.6

9 years ago

3.1.5

9 years ago

3.1.4

9 years ago

3.1.3

9 years ago

3.1.2

9 years ago

3.1.0

9 years ago

3.0.2

9 years ago

3.0.1

9 years ago

3.0.0

9 years ago

2.0.7

9 years ago

2.0.6

9 years ago

2.0.5

9 years ago

2.0.3

10 years ago

2.0.2

10 years ago

2.0.1

10 years ago

1.1.0

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago