Syntax
Syntax Overview
Definitions
We're going to call something between the set delimiters a tag. Ex: {{...}}
, where {{
and }}
are called "delimiters"
Language Items
There are 5 language items in Squirrelly:
- Interpolation tags place the value of the code inside them into the rendered template. Example: Rendering
Hi {{it.name}}
with{name: "Ben"}
will return"Hi Ben"
. The data you call a template with is referenced usingit
, similarly to doT.js. - Evaluation tags start with
!
and place the code inside them into the template function. Examples: Comments are written using evaluation tags ({{! /*comment */}}
), as are JS function calls ({{! console.log('hi') }}
). It's usually discouraged to use evaluation tags for complex functions and logic, which helpers are ideal for. - Helpers start with
@
and are for logic in the template. Loops and conditionals are both implemented as native helpers, a special kind of helper that compiles into native JS code before rendering. Helpers use blocks (that start with#
) for logical separation. Examples:- If/Else:
{{ @if (it.number === 3) }} Number is three {{ #elif (it.number === 4) }} Number is four {{ #else }} Number is five {{ /if}}`
- If/Else:
- Filters are for post-processing values such as references and helpers. You can define your own that do anything from capitalizing letters to emojifying strings. Example:
{{someref | capitalize}}
Inspiration
Squirrelly takes inspiration from Mustache, Handlebars, EJS, Nunjucks, Swig, doT.js, and many other great template engines.