Boolean expressions
Literal​
Creates a new boolean value.
true
false
Comparison​
Two values of the same type can be compared using the following operators:
Operator | Description | Supported types |
---|---|---|
= | equal to | any |
!= | not equal to | any |
< | less than | number, date, time, date-time, duration |
<= | less than or equal to | number, date, time, date-time, duration |
> | greater than | number, date, time, date-time, duration |
>= | greater than or equal | number, date, time, date-time, duration |
between [x] and [y] | same as (_ >= x and _ <= y) | number, date, time, date-time, duration |
5 = 5
// true
5 != 5
// false
date("2020-04-05") < date("2020-04-06")
// true
time("08:00:00") <= time("08:00:00")
// true
duration("P1D") > duration("P5D")
// false
duration("P1Y") >= duration("P6M")
// true
5 between 3 and 7
// true
date("2020-04-06") between date("2020-04-05") and date("2020-04-09")
// true
The equals operator has only one equals sign (e.g. x = y
). In other languages, the operator has two equals signs (e.g. x == y
).
Null check​
Any value or variable can be compared with null
to check if it is equal to null
, or if it exists.
Comparing null
to a value different from null
results in false
. It returns true
if the
value is null
or the variable doesn't exist.
Comparing a context entry with null
results in true
if the value of the entry is null
or if
the context doesn't contain an entry with this key.
null = null
// true
"foo" = null
// false
{x: null}.x = null
// true
{}.y = null
// true
The built-in
function is defined() can be
used to differentiate between a value that is null
and a variable or context entry that doesn't
exist.
is defined(null)
// true
is defined({x: null}.x)
// true
is defined({}.y)
// false
Conjunction/and​
Combines multiple boolean values following the ternary logic.
- The result is
true
if all values aretrue
. - The result is
false
if one value isfalse
. - Otherwise, the result is
null
(i.e. if a value is not a boolean.)
true and true
// true
true and false
// false
true and null
// null
true and "otherwise"
// null
false and null
// false
false and "otherwise"
// false
Disjunction/or​
Combines multiple boolean values following the ternary logic.
- The result is
true
if at least one value istrue
. - The result is
false
if all values arefalse
. - Otherwise, the result is
null
(i.e. if a value is not a boolean.)
true or false
// true
false or false
// false
true or null
// true
true or "otherwise"
// true
false or null
// null
false or "otherwise"
// null
Instance of​
Checks if the value is of the given type. Available type names:
boolean
number
string
date
time
date time
day-time-duration
year-month-duration
list
context
function
Any
Use the type Any
to check if the value is not null
.
1 instance of number
// true
1 instance of string
// false
1 instance of Any
// true
null instance of Any
// false
Unary-tests/in​
Evaluates a unary-tests with the given value. The keyword in
separates the value from the unary-tests.
5 in (3..7)
// true
date("2021-06-04") in [date("2021-05-01")..date("2021-05-31")]
// false
5 in (3,5,7)
// true
5 in [2,4,6,8]
// false