The default Handlebars helpers are documented here: https://handlebarsjs.com/guide/block-helpers.html

Courier Handlebars helpers


Universal helpers

And

Usage:

  • {{#if (and true 1 "yay")}}
  • {{#if (and true false)}}
  • {{#if (and variable1 variable2)}}

Should:

  • Return true if all arguments are truthy
  • Return false if one argument is falsy
  • Return true if no arguments

Capitalize

Usage:

  • {{capitalize "courier")}} => "Courier"
  • {{capitalize "try courier")}} => "Try courier" (does not support words)

Should:

  • Capitalize the first character given a string

Concat

Usage:

  • {{concat "hello" "world"}}

Should:

  • Stringify all arguments and join them using the provided separator
  • Should use null string for the separator by default
  • Should return a null string if no arguments

Condition

Usage:

  • {{#if (condition "a" "!=" "b")}}

Should:

  • Throw if the operator is unsupported
  • Require two operands separated by an operator
  • Run the appropriate operation on the operands

Conditional

Usage:

  • {{conditional (filter "data" "customer.name" "EQUALS" "josh") (filter "profile" "email" "CONTAINS" "@trycourier.com")}}

Should:

  • Loop through all arguments and ensure all are truthy if using the "and" logical operator
  • Loop through all arguments and ensure one is truthy if using the "or" logical operator
  • Return true if the conditions passed, false otherwise (use #unless helper to hide content if condition passes)

Default

Usage:

  • {{default undefined "valued customer"}}

Should:

  • Return the value if it is not nullish
  • Return the defaultValue if the value is nullish

Each

Usage:

  • {{each ["a", "b", "c"] as |char|}}

Should:

Filter

Usage:

  • {{conditional (filter "data" "customer.name" "EQUALS" "josh") (filter "profile" "email" "CONTAINS" "@trycourier.com")}}

Should:

  • Require a source, sourceProperty and operator
  • Value is optional as IS_EMPTY and NOT_EMPTY operators do not need it
  • Get source operand from source + sourceProperty
  • Use operator to compare source operand with value operand

Format

Usage:

  • {{format "%.2f" "100")}} => "100.00"

Should:

  • Return a formatted string given a format and set of arguments

Inc

Usage:

  • {{inc value}}

Should:

  • Increase value by 1

JSON-Parse

Usage:

  • {{text-block (params data=(json-parse "{ \"anInlineObject\": true }"))}}

Should:

  • Parse a JSON string and return the result
  • Throw if it encounters an parse error

Not

Usage:

  • {{#if (and (not false) true)}}

Should:

  • Return a boolean inverse of the value

Or

Usage:

  • {{#if (or true false)}}

Should:

  • Return true if one argument is truthy
  • Return false if all argument are falsy
  • Return false if no arguments

Path

Usage:

  • {{#if (path "customer.email")}}

Should:

  • Use the variable handler to resolve a JSONPath
  • Return the resolved value
  • Return undefined if the value was not found

Set

Usage:

  • {{set "name" (default first_name "valued customer")}}

Should:

  • Set a value on the root data using the name
  • Set the value on the root of the variable handler context
  • Restrict top level names (ex: `data`, `profile`, `brand`)

Trim-Left

Usage:

  • {{#trim-left}} test {{/trim-left}}
  • {{trim-left " a string "}}

Should:

  • Return the value trimmed (defaults to block value)

Trim-one-char-right

Usage:

  • {{a-block (params text=(trim-one-char-right "ends with\ "))}}

Should:

Trim-Right

Usage:

  • {{#trim-right}} test {{/trim-right}}
  • {{trim-right " a string "}}

Should:

  • Return the value trimmed (defaults to block value)

Trim

Usage:

  • {{#trim}} test {{/trim}}
  • {{trim " a string "}}

Should:

  • Return the value trimmed (defaults to block value)

Var

Usage:

  • "{{var customer.fullName}}" <{{var "customer.email"}}>

Should:

  • Use the variable handler to resolve a JSONPath
  • Return the resolved value as a string
  • Not be a SafeString so the value will be encoded

With

Usage:

  • {{with customers}}

Should:

Math

Add

Usage:

{{abs -1)}}

Should:

  • Return the absolute value for an input value
  • Throw if it encounters a value that is not a number

Ceil

Usage:

  • {{ceil 1.35)}}

Should:

  • Return the input value rounded up to the next largest integer
  • Throw if it encounters a value that is not a number

Divide

Usage:

  • {{divide 8 4)}}

Should:

  • Return the result of dividing one number by another
  • Throw if it encounters an input that is not a number

Floor

Usage:

  • {{floor 1.35)}}

Should:

  • Return the input value rounded down to the next largest integer
  • Throw if it encounters a value that is not a number

Mod

Usage:

  • {{mod 8 3)}}

Should:

  • Return the remainder left over division
  • Throw if it encounters a numerator that is not a number
  • Throw if it encounters a operator that is not a number

Multiply

Usage:

  • {{multiply 8 3)}}

Should:

  • Return the result of multiply two numbers together
  • Throw if it encounters an input that is not a number

Round

Usage:

  • {{round 1.35)}}

Should:

  • Return the input value rounded to the nearest integer
  • Throw if it encounters a value that is not a number

Subtract (or sub)

Usage:

  • {{subtract 8 3)}}

Should:

  • Return the result of subtracting one number from another
  • Throw if it encounters an input that is not a number

SendWithUs

date-time-format

Usage:

  • {{swu_datetimeformat 1593031220882 "%a, %B %d"}}

Should:

  • Parse milliseconds since epoch number and return a value based on the provided format
  • Throw if a number is not provided

Iso8601-to-time

Usage:

  • {{swu_iso8601_to_time "2020-06-24T19:17:47.010Z")}}

Should:

  • Parse an ISO date string and return the time value
  • Throw if it encounters an Invalid Date

timestamp-to-time

Usage:

  • {{swu_timestamp_to_time "2020-06-24T19:17:47.010Z")}}

Should:

  • Parse a Unix epoch timestamp and return the time value
  • Throw if it encounters an Invalid Date
Did this answer your question?