107 lines
7.3 KiB
ReStructuredText
107 lines
7.3 KiB
ReStructuredText
Operators
|
||
=========
|
||
|
||
.. rubric:: Arithmetic
|
||
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| **Operator** | **Description** | **Example** |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| \+ | Adds two operands. | 10 + 20 = 30 |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| − | Subtracts second operand from the first. | 10 − 20 = -10 |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| \* | Multiplies both operands. | 10 * 20 = 200 |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| / | Divides numerator by de-numerator. | | 10 / 20 = 2 |
|
||
| | | | 10 / 3 = 3.333... |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| \\ [#f1]_ | Integer divides numerator by de-numerator. | 10 \\ 3 = 3 |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| % | Remainder after an integer division. | | 20 % 10 = 0 |
|
||
| | | | 11 % 3 = 2 |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
|
||
.. [#f1] The backslash is also used as an ``escape`` character. So if you want to use the intdivide operator inside a rule you must write your rulses like this:
|
||
|
||
.. code-block:: json
|
||
|
||
{
|
||
"rules": {
|
||
"rule": "IF 3 \\ 2 = 1 THEN switch DEVICE light TO on",
|
||
"active": 1
|
||
}
|
||
}
|
||
|
||
.. rubric:: Relational
|
||
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| **Operator** | **Description** | **Example** |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| == | | Checks if the first and second (nummeric) | | 20 == 10 = false |
|
||
| | | operand are equal. | | 10 == 10 = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| != | | Checks if the first and second (nummeric) | | 20 != 10 = true |
|
||
| | | operand are unequal. | | 10 != 10 = false |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| IS | | Checks if the first and second (character) | | a IS b = false |
|
||
| | | operand are equal. | | a IS a = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| >= | | Checks if the first operand is greater or | | 20 >= 10 = true |
|
||
| | | equal to the second operand. | | 10 >= 20 = false |
|
||
| | | | 10 >= 10 = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| > | | Checks if the first operand is greater than | | 20 > 10 = true |
|
||
| | | the second operand. | | 10 > 20 = false |
|
||
| | | | 10 > 10 = false |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| <= | | Checks if the first operand is smaller or | | 20 <= 10 = false |
|
||
| | | equal to the second operand. | | 10 <= 20 = true |
|
||
| | | | 10 <= 10 = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| < | | Checks if the first operand is smaller than | | 20 < 10 = false |
|
||
| | | the second operand. | | 10 < 20 = true |
|
||
| | | | 10 < 10 = false |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
|
||
.. versionadded:: 8.0 ISNOT operator added
|
||
|
||
.. deprecated:: 8.1.0
|
||
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| **Operator** | **Description** | **Example** |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| ISNOT | | Checks if the first and second (character) | | a ISNOT b = true |
|
||
| | | operand are equal. | | a ISNOT a = false |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
|
||
.. rubric:: Logical
|
||
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| **Operator** | **Description** | **Example** |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| AND | | Checks if the first and second operands are | | 1 AND 1 = true |
|
||
| | | true. | | 1 AND 0 = false |
|
||
| | | - values greater of smaller then 0 are true | | foo AND false = true |
|
||
| | | - strings equals to ``0`` are false | | true AND true = true |
|
||
| | | - strings other than ``0`` are true | | false AND false = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
| OR | | Checks if the first or second operands are | | 0 OR 0 = false |
|
||
| | | true. | | 1 OR 0 = true |
|
||
| | | - values greater of smaller then 0 are true | | foo OR false = true |
|
||
| | | - strings equals to ``0`` are false | | true OR true = true |
|
||
| | | - strings other than ``0`` are true | | false OR false = true |
|
||
+--------------+-------------------------------------------------+--------------------------+
|
||
|
||
.. rubric:: Other
|
||
|
||
.. versionadded:: 8.1.0
|
||
|
||
+----------------+-------------------------------------------------+--------------------------+
|
||
| **Operator** | **Description** | **Example** |
|
||
+----------------+-------------------------------------------------+--------------------------+
|
||
| | . | Concatenates two strings | | a . b == 'ab' |
|
||
| | (single dot) | | | a . ' ' . b == 'a b' |
|
||
| | | | RANDOM(1, 2) . '34' |
|
||
+----------------+-------------------------------------------------+--------------------------+
|
||
|