Operators

This is Tinderbox Cookbook version 2.0.1, created in conjunction with Tinderbox 7.3.2. The locale settings used to export this document: en-US. Most date tests were written/tested on a UK day/month order system and thus tests may fail if exported using different locale settings.

This page explores Tinderbox operators, used in actions, rules, and with the export templates ^action() and ^value().

Deprecation. Some codes are now marked 'deprecated'. This means that while they may still work, such syntax should be avoided. New documents should not use such syntax and existing documents in regular use should be have their code reviewed to avoid retaining deprecated usage.

*

Multiply numbers and repeat strings

description try expect result ok

Multiplying numbers

3*5 15 15 not yet

repeating strings

5*"A" AAAAA AAAAA not yet

/

Divides two numbers

description try expect result ok
6/2 3 3 not yet

division by zero is undefined

5/0 inf not yet
4/-2 -2 -2 not yet

4-2/2 is equivalent to 4-(2/2)

4-2/2 3 3 not yet

+

Add numbers, add items to sets, and concatenate strings.

description try expect result ok

Adding numbers

1+1 2 2 not yet

concatenating strings

"able"+"baker" ablebaker ablebaker not yet

mixing strings and numerals

"able"+27 able27 able27 not yet

Adding a string to a set adds a new element to the set.

$UserSet is "able;baker".

$UserSet+"dog" able;baker;dog able;baker;dog not yet

If you add an element to a set that already contains the element, the set does not change.

$UserSet is "able;baker".

$UserSet+"baker" able;baker able;baker not yet

-

subtract numbers, or remove elements from a set

description try expect result ok

subtracting numbers

5-3 2 2 not yet

Subtracting an element from a set removes that element.

$UserSet is "able;baker".

$UserSet-"baker" able able not yet

Subtracting an element from a set has no effect if the set did not contain the element.

$UserSet is "able;baker".

$UserSet-"dog" able;baker able;baker not yet

String substraction is undefined

"charlie"-"ch" charlie-ch not yet

!

negates a logical value. In Tinderbox, the empty string "", the number 0, and the date never are considered false; all other values are considered true.

description try expect result ok
!(5=2+3) not yet
!(5>1) not yet

$UserFlag is false .

!$UserFlag true true not yet

$UserFlag is true .

!$UserFlag false not yet

Equivalent to ((!0) | 1)

!0 | 1 true true not yet

Equivalent to ((!0) & 1)= 1&1= 1

!0 &1 true true not yet
!(0 | 1) false not yet

>

compares two dates, strings, or numbers

description try expect result ok
5>4 true 1 not yet
5>5 false 0 not yet
5>6 false 0 not yet
dogs>cats true true not yet

strings use lexical comparison

dogs>dog true true not yet

strings use lexical comparison

"50">"5" true true not yet
date(2004,12,1)>date(2001,7,14) true true not yet
date(2004,12,1)>date(2007,7,14) false not yet

>=

compares two dates, strings, or numbers

description try expect result ok
5>=4 true 1 not yet
5>=5 true 1 not yet
5>=6 false 0 not yet
50>=5 true 1 not yet
dogs>=cats true true not yet

strings use lexical comparison

dogs>=dog true true not yet

strings use lexical comparison

"50">="5" true true not yet
date(2004,12,1)>=date(2001,7,14) true true not yet
date(2004,12,1)>=date(2007,7,14) false not yet
date(2004,12,1)>=date(2004,12,1) true true not yet

<

compares two dates, strings, or numbers

description try expect result ok
4<5 true 1 not yet
5<5 false 0 not yet
6<5 false 0 not yet
5<50 true 1 not yet

strings use lexical comparison

dog true true not yet

strings use lexical comparison

"5"<"50" true true not yet
date(2001,7,14) true true not yet
date(2007,7,14) false not yet

<=

compares two dates, strings, or numbers

description try expect result ok
4<=5 true 1 not yet
5<=5 true 1 not yet
6<=5 false 0 not yet
5<=50 true 1 not yet
cats<=dogs true true not yet

strings use lexical comparison

dog<=dogs true true not yet

strings use lexical comparison

"5"<="50" true true not yet
date(2001,7,14)<=date(2004,12,1) true true not yet
date(2007,7,14)<=date(2004,12,1) false not yet
date(2004,12,1)<=date(2004,12,1) true true not yet

=

Assign a value to left-side expression.

Use == for comparison of two dates, strings, or numbers

description try expect result ok

Rule: $UserString="Hello"

$UserString Hello Hello not yet

Rule: $UserString=$MyString

$UserString Hello world Hello world not yet

Rule: $UserString= "Hello"; $UserString = $UserString + " " + $MyString

$UserString Hello world Hello world not yet

==

compares two dates, strings, or numbers. While = is sometimes an assignment, == is unambiguously a comparison. Use of = for comparison is now deprecated.

description try expect result ok
5==4 false 0 not yet
5==5 true 1 not yet
1+4==5 true 1 not yet
5==1+4 true 1 not yet

UserString is dogs.

"dogs"==$UserString true true not yet
dogs=="do"+"gs" true true not yet
"do"+"gs"=="dogs" true true not yet
date(2004,12,1)==date("1 Dec 2004") true true not yet

!=

The != operator tests inequality

description try expect result ok
5!=4 true 1 not yet
5!=5 false 0 not yet
2+4!=5 true 1 not yet
5!=2+4 true 1 not yet

UserString is dog.

"dogs"!=$UserString true true not yet
dogs!="do"+"g" true true not yet
"do"+"g"!="dogs" true true not yet
date(2004,11,1)!=date("1 Dec 2004") true true not yet

comparisons

Examples of comparisons, with special attention to operator precedence

description try expect result ok
(5>3) & (5>2) true true not yet
5>3 & 5>2 true true not yet
1+2*3 7 7 not yet

$Date is 10/12/2008

$Date>"10/23/2004" true true not yet

$Date is 01/01/2000

$Date>"10/23/2004" false not yet