This version is out of date, covering development from v9.0.0 to v9.3.0. It is maintained here only for inbound reference links from elsewhere. It is no longer actively updated.

Jump to the current version of aTbRef

Tinderbox v9 Icon

collect(group,attribute)


Operator Type: 

Operator Scope of Action: 

Operator Purpose: 

Operator First Added: 

Operator Altered: 

 Function   [other Function type actions]

 Group   [operators of similar scope]

 Dictionary, Set & List operations   [other Dictionary, Set & List operations operators]

 Baseline

 9.0.0


collect(group,attribute)

A function collect() builds a List by visiting each note described by group and adding the value of the designated attribute to the set. See collect_if() a for a related new operator.

If the collected attribute type is multi-value, i.e. Set or a List type, collect() adds its elements to the result. If the collected attribute is not a Set or List type attribute, but contains a semicolon, quotation mark, or parentheses, the value will be added to the result as a quoted string. The change should correct a variety of confusing edge cases.

group may be any group designator, or group defined by find(). In addition, group may be argument that designates a particular (single) note other than 'this'. collect() omits notes for which $Searchable is false.

attribute can be any expression, but is typically an attribute's name.

For example,

$MyList = collect(children,$Name); 

constructs a set with the name of each child of the note.

For example,

$MyList = collect(children(/agents/books),$Name); 

does the same for children of the note 'books' inside 'agents'.

$MyList = collect(children,$Width * $Height); 

collects a series of numerical values of each child's map icon height/width in Tinderbox map units. Thus if a child had a $Width of 4 and $Height of 2, the collect() result for that item would be 8.

If a list of unique values is required, i.e. a set rather than a list, simply pass the output to a Set attribute. Thus if:

$MyList = collect(children,$FavFruit); $MyList is "Apples;Oranges;Pears;Apples"

$MySet = collect(children,$FavFruit); $MySet is "Apples;Oranges;Pears;"

collect() vs. List/Set.collect()

For working with Lists or Sets of actual values, also see List/Set.collect().