Functions
Functions allow you to manipulate data in your template
Documint uses an enhanced version of Handlebars as its templating engine. This means all valid Handlebars syntax is valid Documint syntax. Below is a list of custom functions that can be used in your Documint templates.

Combining Functions

You can combine functions by wrapping the inner function in parenthesis.
Example:
{{$link ($get "path.to.website_url") "Go to website"}}
Here we're using the $get function within the $link function by wrapping it inside of parenthesis.

General

$var

Creates a custom variable in your template which you can access from other parts of your template

Signature

{{$var name value}}

Arguments

Name
Description
Type
Required
name
The name of the variable. This will be used to access it later. Must be a valid JavaScript key
String
value
The value of the variable
Any

Returns

This function does not have a return value.

Example #1 - Basic

Template
Result
{{$var "custom_var" "Custom value"}}
...
{{custom_var}} // Used somewhere else in the template after the above declaration
Custom value

Example #2 - Advanced

Template
Data
Result
Create a custom variable and set the value to the results of the filter function where we filter items that have a quantity of 10 or more.
Repeat the section for each item in the custom variable
{
"items":[
{
"name": "Item #1",
"qty": 5
},
{
"name": "Item #2",
"qty": 10
},
{
"name": "Item #3",
"qty": 15
},
{
"name": "Item #4",
"qty": 20
}
]
}
Variables can only be accessed after the point in the template where they are declared.

Math

$add

Add two numbers together

Signature

{{$add number1 number2 [format]}}

Arguments

Name
Description
Type
Required
number1
The first number in an addition.
Number
number2
The second number in an addition.
Number
format
Format string used to format the result
String

Returns

Returns the total.
Example
Template
Data
Result
{{$add subtotal tax}}
{
"subtotal":100,
"tax": 7.50
}
107.5

$subtract

Subtracts the second number from the first number.

Signature

{{$subtract number1 number2 [format]}}

Arguments

Name
Description
Type
Required
number1
The first number in a subtraction.
Number
number2
The second number in a subtraction.
Number
format
Format string used to format the result
String

Returns

Returns the total.
Example
Template
Data
Result
{{$subtract subtotal discount}}
{
"subtotal":100,
"discount": 21.5
}
78.5

$multiply

Multiplies two numbers together.

Signature

{{$multiply number1 number2 [format]}}

Arguments

Name
Description
Type
Required
number1
The first number in a multiplication.
Number
number2
The second number in a multiplication.
Number
format
Format string used to format the result
String

Returns

Returns the product.
Example
Template
Data
Result
{{$multiply subtotal .075}}
{
"subtotal": 150
}
11.25

$divide

Divides the first number by the second number.

Signature

{{$divide dividend divisor [format]}}

Arguments

Name
Description
Type
Required
dividend
The first number in a division.
Number
divisor
The second number in a division.
Number
format
Format string used to format the result
String

Returns

Returns the total.
Example
Template
Data
Result
{{$divide wins total_games}}
{
"wins": 3,
"total_games": 15
}
.2

$sum

Computes the sum of the values.
This function has multiple signatures
Signature 1
Signature 2
Signature 3
{{$sum array [format]}}
Computes the sum of numbers in an array.

Arguments

Name
Description
Type
Required
array
List of numbers to sum.
Number Array
format
Format string used to format the result
String
Example
Template
Data
Result
{{$sum hours_worked}}
{
"hours_worked": [3, 6, 4, 12]
}
25

Returns

Returns the total.
{{$sum number1 number2 [...] [format]}}
Computes the sum of numbers passed as arguments.

Arguments

Name
Description
Type
Required
number1
The first number to sum.
Number
number2
The second number to sum.
Number
[...]
The remaining numbers to sum.
Number
format
Format string used to format the result
String
Example
Template
Data
Result
{{$sum subtotal discount tax}}
{
"subtotal": 150,
"discount": -20,
"tax": 6.50
}
136.5

Returns

Returns the total.
{{$sum collection path [format]}}
Computes the sum of numbers within a collection (an array of objects).

Arguments

Name
Description
Type
Required
collection
An array of objects
Collection
path
Path to the number property on each object.
String
format
Format string used to format the result
String
Example
Template
Data
Result
{{$sum items "price"}}
{
"items": [
{ "name":"Rocket Skates", "price":160.3 },
{ "name":"Acme Glue", "price":15.6 },
{ "name":"Wing Suit", "price":699.99 },
]
}
875.89

Returns

Returns the total.

$min

Computes the minimum number in an array.

Signature

{{$min array [format]}}

Arguments

Name
Description
Type
Required
array
Array of numbers.
Number Array
format
Format string used to format the result
String

Returns

Returns the minimum value.
Example
Template
Data
Result
{{$min scores}}
{
"scores": [ 3, 22, 9, 15 ]
}
3

$max

Computes the maximum number in an array.

Signature

{{$max array [format]}}

Arguments

Name
Description
Type
Required
array
Array of numbers.
Number Array
format
Format string used to format the result
String

Returns

Returns the maiximum value.
Example
Template
Data
Result
{{$max scores}}
{
"scores": [ 3, 22, 9, 15 ]
}
22

$mean

Computes the average of all values in an array.

Signature

{{$mean array [format]}}

Arguments

Name
Description
Type
Required
array
Array of numbers.
Number Array
format
Format string used to format the result
String

Returns

Returns the average value.
Example
Template
Data
Result
{{$mean scores}}
{
"scores": [ 3, 22, 9, 15 ]
}
12.25

$round

Computes number rounded to precision.

Signature

{{$round number [precision=0] [format]}}

Arguments

Name
Description
Type
Required
number
Array of numbers.
Number
precision
Decimal precision to round to. Default=0
Number
format
Format string used to format the result
String

Returns

Returns the rounded value.
Example
Template
Data
Result
{{$round avg_age}}
{
"avg_age": 39.486
}
39

$floor

Computes number rounded down to precision.

Signature

{{$floor number [precision=0] [format]}}

Arguments

Name
Description
Type
Required
number
Array of numbers.
Number
precision
Decimal precision to round down to.
Default=0
Number
format
Format string used to format the result
String

Returns

Returns the rounded down value.
Example
Template
Data
Result
{{$floor avg_age}}
{
"avg_age": 39.682
}
39

$ceil

Computes number rounded up to precision.

Signature

{{$ceil number [precision=0] [format]}}

Arguments

Name
Description
Type
Required
number
Array of numbers.
Number
precision
Decimal precision to round down to.
Default=0
Number
format
Format string used to format the result
String

Returns

Returns the rounded-up value.
Example
Template
Data
Result
{{$ceil avg_age}}
{
"avg_age": 39.182
}
40

List/Arrays

#each

Loops over an array (list) of items. This is different than the other functions because it has an opening ({{#each}}) and closing ({{/each}}) tag and uses an # instead of a $ to prefix the function name. The content within the opening and closing tags is set to the context of the current item in the loop. This means that any variables used within the opening and closing tags are relative to the current item in the loop. If the list of items being looped over is a list of objects, then variable names will represent properties on that object. See example below.

Signature

{{#each array }}{{this}}{{/each}}

Arguments

Name
Description
Type
Required
array
List of items to repeat/loop over
String Array
Number Array
Boolean Array
Object Array
Array Array

Returns

Content within the opening and closing tags, for each item in the given array/list.

Example - Array of Objects

In this example we're looping over an array/list of Objects. We can access the properties of the current object in the loop simply by using the name of the property. In the case below, we're displaying the name property of each object using the {{name}} token. This works because the within the opening and closing tags of the #each function, the context is set to the current item in the loop.
Template
Data
Result
{{#each characters}}{{name}}, {{/each}}
{
"characters": [
{ "name": "Wile E. Coyote", "email":"[email protected]" },
{ "name": "Road Runer", "email":"[email protected]" }
]
}
Wile E. Coyote, Road Runner

Example - Array of Strings

In this example, we're looping over an array/list of Strings. We use the this keyword to reference the current item in the loop. this always represents the current item in the loop, even when looping over data types other than Strings.
Template
Data
Result
{{#each characters}}{{this}}, {{/each}}
{
"characters": [ "Wile E. Coyote", "Road Runer" ]
}
Wile E. Coyote, Road Runner

$filter

Filters an array/list of items.

Signature

{{$filter array pathoperator [value]}}

Arguments

Name
Description
Type
Required
array
Accepts either an array of data or a relative path, as a String, to an array.
String
String Array
Number Array
Object Array
path
Path to property if looping over an array/list of Objects.
Note: If looping over a list of Strings, Numbers or Booleans then this should be the operator.
String
operator
The operator used to evaluate each item in the array/list.
Note: If looping over an array/list of Strings, Numbers or Booleans then this should be the value to check against.
String
value
The value to compare variable's value to. Required when using an operator that requries two arguments.
String
Number
Boolean

Example - Array of Objects

Template
Data
Result
{{$filter products "category" "isIn" "Disguise,Explosive"}}
{
"products": [
{ "name":"Batman Costume", "category":"Disguise" },
{ "name":"TNT", "category":"Explosive" },
{ "name":"Jet-Propelled Unicycle", "category":"Transportation" }
]
}
[
{ "name":"Batman Costume", "category":"Disguise" },
{ "name":"TNT", "category":"Explosive" }
]

$group

Documentation coming soon.

$join

Concatenates an array (list) of items into a string.

Signature

{{$join array [path] [separator] [final] }}

Arguments

Name
Description
Type
Required
array
Accepts either an array of data or a relative path, as a String, to an array.
String
String Array
Number Array
Object Array
path
If the array is a collection (an array of objects) then use this path to specify which property in the object should be concatenated.
Default value: ", "
String
separator
String that separates each item in the array.
String
final
The string that's used to separate the last two items.
String

Example #1 - Array of strings

Template
Data
Result
{{$join categories ", " " & "}}
{
"categories": ["Disguise", "Explosive", "Transportation"]
}
Disguise, Maintenance & Transportation

Example #2- Collection (array of objects)

Template
Data
Result
{{$join items "name" ", " " & "}}
{
"items": [
{ "name": "Glue V1", "price": 9.99 },
{ "name": "Artificial Rock", "price": 26.99 },
{ "name": "Bat-Man's Outfit", "price": 159.99 }
]
}
Glue V1, Artificial Rock & Bat-Man's Outfit

Example #3 - Path to array

Template
Data
Result
{{$join "company.employees" "name" ", " " & "}}
{
"company": {
"name": "Acme Co.",
"employees": [
{
"name": "Bernadine Burton",
"role": "Decoy"
},
{
"name": "Good Battle",
"role": "Field Agent"
},
{
"name": "Dennis Miles",
"role": "Field Agent"
}
]
}
}
Bernadine Burton, Good Battle & Dennis Miles

Helpers

$extname

Returns the extension name of a filename.

Signature

{{$extname filename }}

Arguments

Name
Description
Type
Required
filename
The name of the file that you're trying to get the extension name of.
String

Example

Template
Data
Result
{{$extname filename}}
{
"filename": "https://acmec.co/assets/image.jpg"
}
jpg

$inspect

Displays the raw merge data used to create the document. Useful for debugging your template when merging documents.

Signature

{{$inspect [expandDepth=1]}}

Arguments

Name
Description
Type
Required
expandDepth
The number of levels deep to expand nested objects and arrays. Unexpaded objects will will display as [object Object] and unexpected arrays will display as [array Object]
String
Number

Example

Template
Data
Result
{{$inspect 2}}
{
"name":"Order 2321",
"account":[
{
"name":"Acme Co.",
"address":{
"street": "123 Main St.",
"city": "New York",
"state": "New York"
}
}
],
"items":[
{ "name":"Widget 1", "price":123, "qty": 1, "amount": 123 },
{ "name":"Widget 2", "price":321, "qty": 1, "amount": 321 },
{ "name":"Widget 3", "price": 456, "qty": 1, "amount": 456 },
]
}

Content

$iframe

Documentation coming soon!
Creates a link to a given URL

Signature

{{$link url [text]}}

Arguments

Name
Description
Type
Required
url
URL value of the link
String
text
Text to display in document. If no value is provided the URL of the link will be displayed
String

Returns

Link to the given URL.
Example
Template
Data
Result
{{$link company.website}}
{{$link company.website company.name}}
{
"company":{
"name":"Acme Co.",
"website":"https://www.acme.co"
}
}

$md

Renders markdown content

Signature

{{$md content}}

Arguments

Name
Description
Type
Required
content
Markdown content
String

Example

Template
Data
Result
{{$md notes}}
{
"notes":"Before moving forward you need to complete the following items:\n[ ] Checklist item one\n[x] Checklist item two\n[ ] Checklist item three\n"
}

Last modified 3mo ago
Copy link
On this page
General
$var
Math
$add
$subtract
$multiply
$divide
$sum
$min
$max
$mean
$round
$floor
$ceil
List/Arrays
#each
$filter
$group
$join
Helpers
$extname
$inspect
Content
$iframe
$link
$md