Operator Scope of Action:
Operator First Added:
This returns a Set of unique values for the attribute attribute. As the output is a of Set data type, the list of possible values is de-duped thus giving a list of unique values. Any suggested values not actually used by at least one note are omitted from the list return by values().
If the named attribute is a set or list, values() returns a list of all the unique discrete list item values that occur. If the named attribute is a string, values() returns all the unique strings.
The returned set is lexically
The attribute parameter is evaluated so may be:
- A quoted attribute name without $-prefix:
- A string attribute name, whose current value is the name of an attribute (without a dollar prefix). If $MyString has the value "MyList", then
values($MyString)will evaluate the unique values for $MyList (and output the same result as
- An expression resolving to an attribute name.
Thus if $MyString has the value "MyList", then these are functionally equivalent:
It is envisaged that the first method (the quoted, un-prefixed, attribute name) will be the most usual method of using values().
Sorting. The data is returned in case-sensitive lexical sort order (i.e. all capitals sort before lower case letters, and numbers sorting textually not numerically) so chaining .isort() may often be the desired 'default', or use .nsort() if the list is entirely composed of numbers. Assume, the intention is to get a note whose $Text has one value per line. It could be coded thus:
However, a value list of aardvark/amber/Ant would list in this order: Ant, aardvark, amber. That is due to case-sensitive lexical sorting, whereas a case-insensitive sort would be more appropriate. Thus:
Similarly the default sort would order 1/2/10 and 1/10/2, so a numerical sort would be more sensible:
De-duplication. values() differs from collect() in that values() returns Set-type data and collect() returns List-type data. For a list $MyList, the following are functionally equivalent in output:
values($MyString) (where $MyString has the value "MyList")
If an optional first group parameter is provided, the values returned are drawn only from notes in that scope. The reference point for groups like 'children' or 'siblings' is this note. Thus:
will return all the discrete subtitles (i.e. values of $Subtitle) for children of this note, i.e. the note in which context the action is being evaluated.
If no first parameter is supplied, as in the short form above, the default group is assumed as 'all' and thus at whole document scope.