Operator Type:
Operator Scope of Action:
Operator Purpose:
Operator First Added:
Operator Altered:
Function [other Function type actions]
Item [operators of similar scope]
Query Boolean [other Query Boolean operators]
Baseline
!$AttributeName
In queries and conditional action code expressions, starting an attribute name preceded by an exclamation mark plus a $ character functions as a shortened form of the Boolean test for a false value. Thus the following are functional equivalents:
$MyBoolean==false
!$MyBoolean
In both cases the result is false if the value of $MyBoolean is false.
Usefully Tinderbox also useful supports such short-form !$AttributeName tests for all the other attribute data types, returning true if the attribute has a default value. Per data type, this equates to long form tests like:
$MyAction==""
$MyColor==""
$MyDate==never
$MyFile==""
$MyInterval=="00:00"
$MyList==""
$MyNumber==0
$MySet==""
$MyString==""
$MyURL==""
In all these cases a short-form test returns true if the attribute value is the default for that data type.
This test is the logical opposite of the $AttributeName test.
Occasionally, especially in multiple term conditions/queries, a !$AttributeName can get mis-parsed. If results are incorrect it can help to place parentheses (round brackets) around the term to clarify operator precedence. The following are all correct, and functionally equivalent:
inside("Tasks") & !$Checked
inside("Tasks") & (!$Checked)
(inside("Tasks")) & (!$Checked)