DocumentationTemplate Helpers

Template Helpers

oJo provides a set of built-in Handlebars helpers to enhance your template functionality. These helpers can be used directly in your templates without any additional configuration.

Data Manipulation

JSON Conversion

  • json: Converts a value to a JSON string
{{json object}}
  • array: Converts an array to a string with brackets
{{array [1, 2, 3]}}

String Operations

  • concat: Concatenates multiple strings
{{concat 'Hello' ' ' 'World'}} <!-- Output: Hello World -->
  • lowercase: Converts string to lowercase
{{lowercase 'HELLO'}} <!-- Output: hello -->
  • uppercase: Converts string to uppercase
{{uppercase 'hello'}} <!-- Output: HELLO -->
  • capitalize: Capitalizes first letter of string
{{capitalize 'hello'}} <!-- Output: Hello -->
  • substring: Extracts part of a string
{{substring 'Hello World' 0 5}} <!-- Output: Hello -->

Numeric Operations

Math Operations

  • math: Performs basic mathematical operations
{{math value1 '+' value2}}
<!-- Addition -->
{{math value1 '-' value2}}
<!-- Subtraction -->
{{math value1 '*' value2}}
<!-- Multiplication -->
{{math value1 '/' value2}}
<!-- Division -->
{{math value1 '%' value2}}
<!-- Modulo -->

Number Manipulation

  • round: Rounds a number to specified decimals
{{round 3.14159 2}} <!-- Output: 3.14 -->
  • inc: Increments a number by 1
{{inc 5}} <!-- Output: 6 -->
  • dec: Decrements a number by 1
{{dec 5}} <!-- Output: 4 -->

Number Formatting

  • formatNumber: Formats a number with commas
{{formatNumber 1000}} <!-- Output: 1,000 -->
  • formatCurrency: Formats a number as currency
{{formatCurrency 1000 'USD'}} <!-- Output: $1,000.00 -->
  • formatCurrency: Formats a number as currency with options: minDigits, maxDigits
{{formatCurrency 1000 'USD' 0 1}} <!-- Output: $1,000 -->

Comparison Helpers

Basic Comparisons

  • eq: Equality comparison
{{#if (eq value1 value2)}}
  Values are equal
{{/if}}
  • gt: Greater than comparison
{{#if (gt value1 value2)}}
  Value1 is greater than Value2
{{/if}}
  • lt: Less than comparison
{{#if (lt value1 value2)}}
  Value1 is less than Value2
{{/if}}

Conditional Operations

  • ternary: Conditional (ternary) operator
{{ternary condition 'Yes' 'No'}}

Date and Time

Date Formatting

  • formatDate: Formats a date string using dayjs
{{formatDate date 'YYYY-MM-DD'}}
<!-- Output: 2024-11-06 -->
{{formatDate date 'MMM DD, YYYY'}}
<!-- Output: Nov 06, 2024 -->

Date Comparisons

  • isBefore: Checks if one date is before another
{{#if (isBefore date1 date2)}}
  Date1 is before Date2
{{/if}}
  • isAfter: Checks if one date is after another
{{#if (isAfter date1 date2)}}
  Date1 is after Date2
{{/if}}

Array Operations

  • len: Gets array length
{{len array}} <!-- Output: number of items in array -->

Loop Operations

  • times: Repeats a block n times
{{#times 3}}
  Iteration
  {{@index}}
{{/times}}

Best Practices

  1. Always validate input data before using helpers that perform calculations
  2. Use date formatting helpers with valid date strings
  3. Handle potential undefined values when using array operations
  4. Consider performance impact when using complex helpers in loops
  5. Test helper output with various input types to ensure proper handling