LaCava Research Wiki

Initiated September 2017

Filter Expression

20th November 2018 at 7:58am
whitespace~+-run

A filter expression is the outermost level of the filter syntax. It consists of one or more runs.

If a run has:

  • no prefix, its output titles are dominantly appended to the filter's output
  • the prefix -, output titles are removed from the filter's output (if such tiddlers exist)
  • the prefix +, it receives the filter output so far as its input; its output then replaces all filter ouput so far and forms the input for the next run
  • New in: 5.1.18 the prefix ~, if the filter output so far is an empty list then the output titles of the run are dominantly appended to the filter's output. If the filter output so far is not an empty list then the run is ignored

In technical / logical terms:

RunInterpretationOutput
rununion of sets... OR run
+runintersection of sets... AND run
-rundifference of sets... AND NOT run
~runelse... ELSE run

The input of a run is normally a list of all the non-shadow tiddler titles in the wiki (in no particular order). But the + prefix can change this:

PrefixInput
-, ~ or none[all[]] tiddler titles, unless otherwise determined by the first filter operator
+the filter output of all previous runs so far

Precisely because of varying inputs, be aware that both prefixes - and + do not behave inverse to one another!

For example, in both of the following, $:/baz will only be removed if it actually exists:

To understand why, consider the input for both final runs with their - prefix.

In order to remove $:/baz in any case, existing or not, simply use the + prefix with negated filter operators: