logologo
Get Started
Guide
Development
Plugins
API
English
简体中文
Get Started
Guide
Development
Plugins
API
English
简体中文
logologo
Overview
Configuration

Template Syntax

Basic Usage
Loop Processing

Formatters

Overview
Text Formatting
Number Formatting
Currency Formatting
Date Formatting
Time Interval Formatting
Array Formatting

Advanced Features

Conditional Statements
Advanced Features
FAQ
Application Scenarios
Previous PageArray Formatting
Next PageAdvanced Features

#Conditional Statements

Conditional statements allow you to dynamically control the display or hiding of content in the document based on data values. There are three main ways to write conditions:

  • Inline conditions: Directly output text (or replace it with other text).
  • Conditional blocks: Display or hide a section of the document, suitable for multiple tags, paragraphs, tables, etc.
  • Smart conditions: Directly remove or keep target elements (like rows, paragraphs, images, etc.) with a single tag, for a more concise syntax.

All conditions begin with a logical evaluation formatter (e.g., ifEQ, ifGT, etc.), followed by action formatters (such as show, elseShow, drop, keep, etc.).

#Overview

The logical operators and action formatters supported in conditional statements include:

  • Logical Operators

    • ifEQ(value): Checks if the data is equal to the specified value.
    • ifNE(value): Checks if the data is not equal to the specified value.
    • ifGT(value): Checks if the data is greater than the specified value.
    • ifGTE(value): Checks if the data is greater than or equal to the specified value.
    • ifLT(value): Checks if the data is less than the specified value.
    • ifLTE(value): Checks if the data is less than or equal to the specified value.
    • ifIN(value): Checks if the data is contained in an array or string.
    • ifNIN(value): Checks if the data is not contained in an array or string.
    • ifEM(): Checks if the data is empty (e.g., null, undefined, an empty string, an empty array, or an empty object).
    • ifNEM(): Checks if the data is non-empty.
    • ifTE(type): Checks if the data type is equal to the specified type (for example, "string", "number", "boolean", etc.).
    • and(value): Logical "and", used to connect multiple conditions.
    • or(value): Logical "or", used to connect multiple conditions.
  • Action Formatters

    • :show(text) / :elseShow(text): Used in inline conditions to directly output the specified text.
    • :hideBegin / :hideEnd and :showBegin / :showEnd: Used in conditional blocks to hide or show sections of the document.
    • :drop(element) / :keep(element): Used in smart conditions to remove or keep specified document elements.

The following sections introduce the detailed syntax, examples, and results for each usage.

#Inline Conditions

#1. :show(text) / :elseShow(text)

#Syntax
{data:condition:show(text)}
{data:condition:show(text):elseShow(alternative text)}
#Example

Assume the data is:

{
  "val2": 2,
  "val5": 5
}

The template is as follows:

val2 = {d.val2:ifGT(3):show('high')}
val2 = {d.val2:ifGT(3):show('high'):elseShow('low')}
val5 = {d.val5:ifGT(3):show('high')}
#Result
val2 = 2
val2 = low
val5 = high

#2. Switch Case (Multiple Conditionals)

#Syntax

Use consecutive condition formatters to build a structure similar to a switch-case:

{data:ifEQ(value1):show(result1):ifEQ(value2):show(result2):elseShow(default result)}

Or achieve the same with the or operator:

{data:ifEQ(value1):show(result1):or(data):ifEQ(value2):show(result2):elseShow(default result)}
#Example

Data:

{
  "val1": 1,
  "val2": 2,
  "val3": 3
}

Template:

val1 = {d.val1:ifEQ(1):show(A):ifEQ(2):show(B):elseShow(C)}
val2 = {d.val2:ifEQ(1):show(A):ifEQ(2):show(B):elseShow(C)}
val3 = {d.val3:ifEQ(1):show(A):ifEQ(2):show(B):elseShow(C)}
#Result
val1 = A
val2 = B
val3 = C

#3. Multi-variable Conditionals

#Syntax

Use the logical operators and/or to test multiple variables:

{data1:ifEQ(condition1):and(.data2):ifEQ(condition2):show(result):elseShow(alternative result)}
{data1:ifEQ(condition1):or(.data2):ifEQ(condition2):show(result):elseShow(alternative result)}
#Example

Data:

{
  "val2": 2,
  "val5": 5
}

Template:

and = {d.val2:ifEQ(1):and(.val5):ifEQ(5):show(OK):elseShow(KO)}
or = {d.val2:ifEQ(1):or(.val5):ifEQ(5):show(OK):elseShow(KO)}
#Result
and = KO
or = OK

#Logical Operators and Formatters

In the following sections, the described formatters use the inline condition syntax with the following format:

{data:formatter(parameter):show(text):elseShow(alternative text)}

#1. :and(value)

#Syntax
{data:ifEQ(value):and(new data or condition):ifGT(another value):show(text):elseShow(alternative text)}
#Example
{d.car:ifEQ('delorean'):and(.speed):ifGT(80):show('TravelInTime'):elseShow('StayHere')}
#Result

If d.car equals 'delorean' and d.speed is greater than 80, the output is TravelInTime; otherwise, the output is StayHere.

#2. :or(value)

#Syntax
{data:ifEQ(value):or(new data or condition):ifGT(another value):show(text):elseShow(alternative text)}
#Example
{d.car:ifEQ('delorean'):or(.speed):ifGT(80):show('TravelInTime'):elseShow('StayHere')}
#Result

If d.car equals 'delorean' or d.speed is greater than 80, the output is TravelInTime; otherwise, the output is StayHere.

#3. :ifEM()

#Syntax
{data:ifEM():show(text):elseShow(alternative text)}
#Example
null:ifEM():show('Result true'):elseShow('Result false')
[]:ifEM():show('Result true'):elseShow('Result false')
#Result

For null or an empty array, the output is Result true; otherwise, it is Result false.

#4. :ifNEM()

#Syntax
{data:ifNEM():show(text):elseShow(alternative text)}
#Example
0:ifNEM():show('Result true'):elseShow('Result false')
'homer':ifNEM():show('Result true'):elseShow('Result false')
#Result

For non-empty data (such as the number 0 or the string 'homer'), the output is Result true; for empty data, the output is Result false.

#5. :ifEQ(value)

#Syntax
{data:ifEQ(value):show(text):elseShow(alternative text)}
#Example
100:ifEQ(100):show('Result true'):elseShow('Result false')
'homer':ifEQ('homer'):show('Result true'):elseShow('Result false')
#Result

If the data equals the specified value, the output is Result true; otherwise, it is Result false.

#6. :ifNE(value)

#Syntax
{data:ifNE(value):show(text):elseShow(alternative text)}
#Example
100:ifNE(100):show('Result true'):elseShow('Result false')
100:ifNE(101):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result false, while the second example outputs Result true.

#7. :ifGT(value)

#Syntax
{data:ifGT(value):show(text):elseShow(alternative text)}
#Example
1234:ifGT(1):show('Result true'):elseShow('Result false')
-23:ifGT(19):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result true, and the second outputs Result false.

#8. :ifGTE(value)

#Syntax
{data:ifGTE(value):show(text):elseShow(alternative text)}
#Example
50:ifGTE(-29):show('Result true'):elseShow('Result false')
1:ifGTE(768):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result true, while the second outputs Result false.

#9. :ifLT(value)

#Syntax
{data:ifLT(value):show(text):elseShow(alternative text)}
#Example
-23:ifLT(19):show('Result true'):elseShow('Result false')
1290:ifLT(768):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result true, and the second outputs Result false.

#10. :ifLTE(value)

#Syntax
{data:ifLTE(value):show(text):elseShow(alternative text)}
#Example
5:ifLTE(5):show('Result true'):elseShow('Result false')
1290:ifLTE(768):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result true, and the second outputs Result false.

#11. :ifIN(value)

#Syntax
{data:ifIN(value):show(text):elseShow(alternative text)}
#Example
'car is broken':ifIN('is'):show('Result true'):elseShow('Result false')
[1,2,'toto']:ifIN(2):show('Result true'):elseShow('Result false')
#Result

Both examples output Result true (because the string contains 'is', and the array contains 2).

#12. :ifNIN(value)

#Syntax
{data:ifNIN(value):show(text):elseShow(alternative text)}
#Example
'car is broken':ifNIN('is'):show('Result true'):elseShow('Result false')
[1,2,'toto']:ifNIN(2):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result false (because the string contains 'is'), and the second example outputs Result false (because the array contains 2).

#13. :ifTE(type)

#Syntax
{data:ifTE('type'):show(text):elseShow(alternative text)}
#Example
'homer':ifTE('string'):show('Result true'):elseShow('Result false')
10.5:ifTE('number'):show('Result true'):elseShow('Result false')
#Result

The first example outputs Result true (since 'homer' is a string), and the second outputs Result true (since 10.5 is a number).

#Conditional Blocks

Conditional blocks are used to display or hide a section of the document, typically to enclose multiple tags or an entire block of text.

#1. :showBegin / :showEnd

#Syntax
{data:ifEQ(condition):showBegin}
Document block content
{data:showEnd}
#Example

Data:

{
  "toBuy": true
}

Template:

Banana{d.toBuy:ifEQ(true):showBegin}
Apple
Pineapple
{d.toBuy:showEnd}Grapes
#Result

When the condition is met, the content in between is displayed:

Banana
Apple
Pineapple
Grapes

#2. :hideBegin / :hideEnd

#Syntax
{data:ifEQ(condition):hideBegin}
Document block content
{data:hideEnd}
#Example

Data:

{
  "toBuy": true
}

Template:

Banana{d.toBuy:ifEQ(true):hideBegin}
Apple
Pineapple
{d.toBuy:hideEnd}Grapes
#Result

When the condition is met, the content in between is hidden, resulting in:

Banana
Grapes