Template allows you to use expression language to define variables and operations on them. This way you can derive new values and reduce necessary input either from user or external system.

`123`

- Number`"Peter"`

- Constant string`Name`

- Variable`+`

- Operator`ABS(X)`

- Function

Numbers and operations with them are handled with highest precision. Acceptable number format is simple: `123.456`

- starting with digits, followed by decimal separator and ending with digits again. Decimal part is not mandatory.

Simple word defines a variable name. It consists from upper or lower case letters and can contain, but cannot start with underscore character. Valid names could look like:

`Name`

`email`

`UnitPrice`

`order_number`

You can define or refer variable within an object. We are using so called dot notation, where `.`

character connects object and variable name. Following expression defines Address object with City property:

`Address.City`

`+`

- addition`-`

- subtraction`*`

- multiplication`/`

- division`%`

- modulo`>`

- greater than`>=`

- greater than or equal to`<`

- lower than`<=`

- lower than or equal to`=`

- assignment`==`

- equal`!=`

or`<>`

- not equal

`NOT(A)`

- logical negation`AND(A, B, ...)`

- logical AND`OR(A, B, ...)`

- logical OR`IF(C, A, B)`

- if logical condition C is true, result is A, otherwise B`ABS(A)`

- absolute value of number A`MAX(A, B, ...)`

- maximum value of values A, B, ...`MIN(A, B, ...)`

- minimum value of values A, B, ...`SIZE(V)`

- size of vector V`SUM(V, X)`

- sum of expression X on vector V`SUMC(V, X, F, T)`

- conditional sum of expression X on vector V, where expression F has target value T`NUM(N, D)`

- print number N with D digits, pad with leading zeroes`NUM(N, D, P)`

- print number N with D digits and P decimal places, pad with leading and trailing zeroes`ROUND(D, S)`

- round decimal number D with S scale, rounding half up`REPLACE(A, B, C)`

- replace string B with string C in A expression`DATE(D, F)`

- print date D in F format (y, M, d, H, m, s)`TO_DATE(A, F)`

- parse string A to date using format F (y, M, d, H, m, s)`DAYS(D)`

- convert number of days D to date

Variable can be of types: boolean, number, string, date and vector. Default type is string, but other types are calculated based on operations or functions used on them. For example, if you use expression `A + 3`

, type of `A`

will be set to number. It then eliminates input errors, because user is forced to enter a number.

In cases when expressions `A + 3`

and `A + ".pdf"`

are used, conflicting type of `A`

as number and string will be resolved as setting type to more format strict one, which is a number in this case.