You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »


Status
Tech review

TODO

Style guide

TODO

TODO

READY FOR REVIEW

DONE

FLAGGED

On this page


 Overview

The JWT expression parser accepts the most common comparison operators as well as logical operators

The main purpose of these operators is to construct complex logical comparisons by linking individual expressions. 



Comparison operators

The operators and their meaning are listed below - the applicable data types for the elements (operands) of the respective operators can be found in the subsequent table.

A comparison always returns a BOOLEAN value.

Overview of all comparison operators


OperatorMeaningExamples (all examples return true)
= equal to
1=1
true = true
[1, 2, 3] = [1, 2, 3]
["blue", "red", "green"] = ["blue", "red", "green"]

When working with lists, each elements' existence and its order are evaluated.

!= not equal to
  • 0 != 1
  • "HELLO" != "Hello"
  • %{issue.description} != "Hello"
  • true != false
  • [1, 2, 3] != [1, 3, 2]
  • ["blue", "red", "green"] != ["blue", "green", "red"]

When working with lists, each elements' existence and its order are evaluated.

< lower than
  • 1 < 2
  • "abc" < "bbc"
  • "abc" < "abcd"
> greater than
  • 2 > 1
  • "bbc" > "abc"
  • "abcd" > "abc"
<= less than or equal to
  • 3 <= 3
>= greater than or equal to
  • "Hello world! Hello *" >= "Hello world"
~ contains
  • "Hello world!" ~ "world", checks whether a string contains a substring.
  • %{issue.components.leads} ~ %{system.currentUser} , checks whether "Component leads" contains "Current user".
  • [1, 2, 3, 2, 2, 4] ~ [2, 1, 2] , when used with lists cardinalities of every single instance of an element must match.
  • ["blue", "red", "green", "red", "white", "red"] ~ ["red", "green", "red"]
  • (["green", "red"] ~ ["red", "green", "red"]) = false
!~ does not contain
  • "world" !~ "Hello world!"
  • %{issue.fixVersions} !~ %{issue.versions} , checks whether "Fix version/s" doesn't contain all versions in "Affects version/s".
  • [1, 2, 3, 2, 2, 4] !~ [2, 1, 1, 4] , when used with lists cardinalities of every single instance of an element must match.
  • ["blue", "red", "green", "red", "red"] !~ ["red", "green", "green", "red"]
in is contained in "world" in "Hello world!" , to check whether a substring is contained in a string.
%{system.currentUser} in %{issue.components.leads} , checks whether "Current user" is contained in "Component leads".
[1, 1, 2] in [2, 1, 1, 1, 4] ,  cardinalities of every single element must match. 
["blue", "red", "red"] in ["red", "green", "blue", "red", "red"] ,  cardinalities of every single instance of an element must match. 
2 in [1, 2, 3]
"blue" in ["red, "blue", "white"]
not in is not contained in "Hello world!" not in "world"
%{issue.versions} not in %{issue.fixVersions} , checks whether not all versions in "Affects version/s" are contained in "Fix version/s".
[1, 1, 2, 2] not in [2, 1, 1, 1, 4] , cardinalities of every single element must match. 
["blue", "red", "red", "blue"] not in ["red", "blue", "red", "red"] , cardinalities of every single instance of an element must match. 
5 not in [1, 2, 3, 3, 4]
"orange" not in ["blue", "red", "white"]
any in some element is in %{issue.versions} any in %{issue.fixVersions} , checks whether any version in "Affects version/s" is contained in "Fix version/s".
[1, 3] any in [3, 4, 5]
["blue", "white"] any in ["black", "white", "green"]
none in no single element is in %{issue.versions} none in %{issue.fixVersions} , checks whether there isn't a single version "Affects version/s" in "Fix version/s".
[1, 2] none in [3, 4, 5]
["blue", "red"] none in ["black", "white", "green"]





Logical operators

The table below lists all logical operators that can be used for linking logical terms in an expression.