april1

April1 templates engine core

Usage no npm install needed!

<script type="module">
  import april1 from 'https://cdn.skypack.dev/april1';
</script>

README

April1

© 2014 RoboterHund

Note:

  1. Still in early development stage. Things may change.
  2. XML and HTML output was removed in 0.3.1 – moved to april1-html.

April1 is a general-purpose, extensible template engine for the Node.js platform.

Main characteristics:

  • Not coupled to any syntax. Templates are defined in plain JS. The extremely simple data structures can be (de)serialized by other packages.
  • Separate components. Designed for easy overriding without breaking other parts, thanks to a well-defined set of constraints.

This is the core module. It provides basic functionality for more specialized modules.

Simple example:

var A = require ('april1');
var template = A.template (
    'Hello, ',
    A.insert ('who'),
    '.',
    A.list (
        'then',
        ' ',
        A.insert ('item'),
        '.'
    )
);

The above code creates a reusable template.

Values are supplied afterwards:

var values = {
    who: 'World',
    then: [
        { item: 1 },
        { item: 2 },
        { item: 3 }
    ]
};

Now, the function call A.string (template, values) would by default return this string:

Hello, World. 1. 2. 3.

By default.


unit tests

The test folder contains a test script. It is rudimentary, but has good coverage.


versions

0.2.2
This is the last version to include support for XML and HTML generation.

0.3.1
Complete redesign.

  • Reduced main module to core functions.
  • More flexibility, more exported functions, simpler components.

0.3.2 - 0.3.3
Redesign of common module, to facilitate extension.
README update with link to april1-html.

0.4.1
Templates are also nodes.
Less classes.
Removed the concept of 'template builder state'.

0.4.2 - 0.4.3
Node processing (modules.dispatch) is now more flexible:

  • The key to retrieve the dispatch table is no longer hard-coded. (.2)
  • The dispatch table can be passed directly as argument. (.3)
  • Added function to process single node instead of array. (.3)

0.4.4 - 0.4.5
Customizable template builder initialization. (.4)
Custom initialization propagated to sub-builders. (.5)

RoboterHund
2014-08-10