A filter expression is the outermost level of the filter syntax. It consists of one or more runs.
If a run has:
-, output titles are removed from the filter's output (if such tiddlers exist)+, 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~, 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 ignoredIn technical / logical terms:
| Run | Interpretation | Output |
|---|---|---|
run | union of sets | ... OR run |
+run | intersection of sets | ... AND run |
-run | difference of sets | ... AND NOT run |
~run | else | ... 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:
| Prefix | Input |
-, ~ 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: