README
Checkly Handlebars
This library is a very simple wrapper around the templating library Handlebars that bundles additional helpers. It can be used as a drop-in replacement. At Checkly, we use Handlebars to provide a powerful flexibility in some of our features like creating custom bodies for alerting webhooks.
What is Checkly?
Checkly is an active reliability platform that brings together the best of end-to-end testing and active monitoring to serve modern, cross-functional DevOps teams. With a focus on JavaScript-based Open Source tech stacks, Checkly is easy to get started with and seamlessly integrates into your development workflow.
Usage
Install via NPM:
$ npm install @checkly/handlebars --save # or yarn add @checkly/handlebars
You can use it as a drop-in replacement for Handlebars:
// replaced the following
const Handlebars = require('handlebars')
// with
const Handlebars = require('@checkly/handlebars')
Helpers
Built-in helpers provided by the vanilla Handlebars package can still be used. If you are using this library for your own project, you can couple it with other libraries that adds functionality such as handlebars-extra
.
{{$RANDOM_NUMBER}}
Produces a random number between 0 and 1000.
Example
Your lucky number is {{$RANDOM_NUMBER}}
<!-- results in: '345' -->
{{$UUID}}
Provides a UUID string from cryptographically-strong random values, compliant with RFC4122's Version 4.
SessionId: {{$UUID}}
<!-- results in: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' -->
{{moment}} (date helper)
Allows moment to be used as a helper. helper-date is used behind the scenes for this helper.
{{moment "5 years ago" "YYYY"}}
//=> 2015
{{and}}
Helper that renders the block if both of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression.
Params
a
{any}b
{any}options
{Object}: Handlebars provided options objectreturns
{String}
Example
<!-- {great: true, magnificent: true} -->
{{#and great magnificent}}A{{else}}B{{/and}}
<!-- results in: 'A' -->
{{compare}}
Render a block when a comparison of the first and third arguments returns true. The second argument is the arithemetic operator to use. You may also optionally specify an inverse block to render when falsy.
Params
a
{}operator
{}: The operator to use. Operators must be enclosed in quotes:">"
,"="
,"<="
, and so on.b
{}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or if specified the inverse block is rendered if falsey.
{{contains}}
Block helper that renders the block if collection
has the given value
, using strict equality (===
) for comparison, otherwise the inverse block is rendered (if specified). If a startIndex
is specified and is negative, it is used as the offset from the end of the collection.
Params
collection
{Array|Object|String}: The collection to iterate over.value
{any}: The value to check for.[startIndex=0]
{Number}: Optionally define the starting index.options
{Object}: Handlebars provided options object.
Example
<!-- array = ['a', 'b', 'c'] -->
{{#contains array "d"}}
This will not be rendered.
{{else}}
This will be rendered.
{{/contains}}
{{default}}
Returns the first value that is not undefined, otherwise the "default" value is returned.
Params
value
{any}defaultValue
{any}returns
{String}
{{eq}}
Block helper that renders a block if a
is equal to b
.
If an inverse block is specified it will be rendered when falsy.
You may optionally use the compare=""
hash argument for the
second value.
Params
a
{String}b
{String}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{gt}}
Block helper that renders a block if a
is greater than b
.
If an inverse block is specified it will be rendered when falsy.
You may optionally use the compare=""
hash argument for the
second value.
Params
a
{String}b
{String}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{gte}}
Block helper that renders a block if a
is greater than or equal to b
.
If an inverse block is specified it will be rendered when falsy.
You may optionally use the compare=""
hash argument for the
second value.
Params
a
{String}b
{String}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{has}}
Block helper that renders a block if value
has pattern
.
If an inverse block is specified it will be rendered when falsy.
Params
val
{any}: The value to check.pattern
{any}: The pattern to check for.options
{Object}: Handlebars provided options objectreturns
{String}
{{isFalsey}}
Returns true if the given value
is falsey. Uses the falsey
library for comparisons. Please see that library for more information
or to report bugs with this helper.
Params
val
{any}options
{Options}returns
{Boolean}
{{isTruthy}}
Returns true if the given value
is truthy. Uses the falsey
library for comparisons. Please see that library for more information
or to report bugs with this helper.
Params
val
{any}options
{Options}returns
{Boolean}
{{ifEven}}
Return true if the given value is an even number.
Params
number
{Number}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
Example
{{#ifEven value}}
render A
{{else}}
render B
{{/ifEven}}
{{ifNth}}
Conditionally renders a block if the remainder is zero when
a
operand is divided by b
. If an inverse block is specified
it will be rendered when the remainder is not zero.
Params
- {}: {Number}
- {}: {Number}
options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{ifOdd}}
Block helper that renders a block if value
is an odd number. If an inverse block is specified it will be rendered when falsy.
Params
value
{Object}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
Example
{{#ifOdd value}}
render A
{{else}}
render B
{{/ifOdd}}
{{is}}
Block helper that renders a block if a
is equal to b
.
If an inverse block is specified it will be rendered when falsy.
Similar to eq but does not do strict equality.
Params
a
{any}b
{any}options
{Object}: Handlebars provided options objectreturns
{String}
{{isnt}}
Block helper that renders a block if a
is not equal to b
.
If an inverse block is specified it will be rendered when falsy.
Similar to unlessEq but does not use strict equality for
comparisons.
Params
a
{String}b
{String}options
{Object}: Handlebars provided options objectreturns
{String}
{{lt}}
Block helper that renders a block if a
is less than b
.
If an inverse block is specified it will be rendered when falsy.
You may optionally use the compare=""
hash argument for the
second value.
Params
context
{Object}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{lte}}
Block helper that renders a block if a
is less than or equal to b
.
If an inverse block is specified it will be rendered when falsy.
You may optionally use the compare=""
hash argument for the
second value.
Params
a
{Sring}b
{Sring}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{neither}}
Block helper that renders a block if neither of the given values are truthy. If an inverse block is specified it will be rendered when falsy.
Params
a
{any}b
{any}options
{}: Handlebars options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{not}}
Returns true if val
is falsey. Works as a block or inline helper.
Params
val
{String}options
{Object}: Handlebars provided options objectreturns
{String}
{{or}}
Block helper that renders a block if any of the given values is truthy. If an inverse block is specified it will be rendered when falsy.
Params
arguments
{...any}: Variable number of argumentsoptions
{Object}: Handlebars options objectreturns
{String}: Block, or inverse block if specified and falsey.
Example
{{#or a b c}}
If any value is true this will be rendered.
{{/or}}
{{unlessEq}}
Block helper that always renders the inverse block unless a
is
is equal to b
.
Params
a
{String}b
{String}options
{Object}: Handlebars provided options objectreturns
{String}: Inverse block by default, or block if falsey.
{{unlessGt}}
Block helper that always renders the inverse block unless a
is
is greater than b
.
Params
a
{Object}: The default valueb
{Object}: The value to compareoptions
{Object}: Handlebars provided options objectreturns
{String}: Inverse block by default, or block if falsey.
{{unlessLt}}
Block helper that always renders the inverse block unless a
is
is less than b
.
Params
a
{Object}: The default valueb
{Object}: The value to compareoptions
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{unlessGteq}}
Block helper that always renders the inverse block unless a
is
is greater than or equal to b
.
Params
a
{any}b
{any}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.
{{unlessLteq}}
Block helper that always renders the inverse block unless a
is
is less than or equal to b
.
Params
a
{any}b
{any}options
{Object}: Handlebars provided options objectreturns
{String}: Block, or inverse block if specified and falsey.