Amreus,

Filters are a little different to standard boolean logic since they start 
from a premise of generating a list of tiddler titles

The following is a quick and untested response, please experiment.

In your example
[is[current]has[birt_date]] [is[current]has[birt_plac]]
The result will be two values (title of the current tiddler) if both fields 
have a value, but since the value is the same, the current tiddler title it 
will be de-duplicated to one tiddler title.

Perhaps one could write this as
[(A!!B) or (A!!C)] where A is just a qualifier as to which B and which C to 
use. The result returned will be blank for false or A for true.

There are no parenthesis for order since the order is left to right. 
Filters operate on the output of the previous step or each run is an AND.
[[title1]] [[Title2]] represents both two titles and two runs like 
[prefix[title1]] [prefix[Title2]] and the results of both runs are joined 
and de-duplicated

In the Doco Maths https://tiddlywiki.com/#Mathematics%20Operators it 
explains how to stop de-duplication for undertaking maths.

Back to your original question
[{!!birt_date}] [{!!birt_plac}] will list the content of the fields if they 
have a value, A is implicit in the "!!fieldname"

You can also get the value of a field, if no value it will not return a 
value 
[is[current]get[birt_date]] [is[current]get[birt_plac]]

but I'm not sure how to write [A and (B or C)] in filter.

I think you already have? '[is[current]has[birt_date]] 
[is[current]has[birt_plac]]'
However The Test for A is not really a test, just a reference to a 
particular tiddler

Personally I suggest learning the filter syntax from the angle of its 
original purpose, titles, since tiddlers are the atomic unit in tiddlywiki, 
you will then start to discover ways to emulate other logical operations.

Some quick examples
[is[current]has[birt_date]has[birt_plac]] title returned only if they both 
have a value

[is[current]has[birt_date]] +[is[current]has[birt_plac]] title returned 
only if first then second is true, the second is free to refer to anything 
so you needs to specify current if thats what you want

Rather than return the title you can now use then and else to set the output

[is[current]has[birt_date]then[yes]else[no]]  

Finally;
Remember with the list widget the output of a filter, if true or a list is 
generated to apply it for each title to the contents of the list.

Sometimes if the list is used to display content only we may use 
+[limit[1]] so if anything satisfies the filter it will display the content 
once.

Regards
Tony


On Thursday, 27 August 2020 07:44:12 UTC+10, amreus wrote:
>
> Good evening. 
>
> Just a question of curiosity.  Can this filter be simplified? For example, 
> can all[current] be "factored out" so it does not need to appear twice?  
>
> [is[current]has[birt_date]] [is[current]has[birt_plac]]
>
> In Boolean, I think this would be [(A and B) or (A and C)] == [A and (B or 
> C)], but I'm not sure how to write [A and (B or C)] in filter. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/94e6db75-65d0-4870-97f2-ebfa11051dd2o%40googlegroups.com.

Reply via email to