Conditional logic with if / else and unless
Handlebars provides a set of core helpers that implement if / else if / else logic of the kind found in many programming languages. As with most implementations of if, the simples form is to take an action only if the condition is true:unless:
Comparison helpers
Theif, else if and unless helpers all take a single boolean value
as their parameter. In practice you often need to derive that value by comparing
other values, and for this we have a set of helpers implementing common comparison operations.
For instance if you needed to check that a variable equalled a particular string
you would use the eq helper:
if helper:
else:
eq - equal
neq - not equal
gt - greater than
gte - greater than or equal to
lt - less than
lte - less than or equal
and - logical AND
or - logical OR
not - logical NOT
Iteration
You can loop over collections of data using theeach helper.
Iterating over JSON and XML elements
ThejsonPath and xPath helpers both output collections so these can be used
in an each loop. See Working with JSON and
Working with XML for details.
Detecting the first and last element while looping
Often it can be useful to know when you’re processing the first or last element in a collection e.g. so that you can decide whether to output a separate character. You can do this using the@first and @last variables that are automatically
provided to the scope inside the each block.
For instance, if you wanted to output a list of JSON objects, separated with
commas and avoiding an extraneous comma at the end:
Getting the loop index
Theeach helper also creates an @index variable in its scope which you can use
to get at the (zero-indexed) element counter:
String and collection conditionals
Contains helper
Thecontains helper returns a boolean value indicating whether the string or array passed as the first parameter
contains the string passed in the second.
It can be used as parameter to the if helper:
Matches helper
Thematches helper returns a boolean value indicating whether the string passed as the first parameter matches the
regular expression passed in the second:
Like the contains helper it can be used as parameter to the if helper: