I was stuck in my dev 
<https://groups.google.com/forum/#!topic/tiddlywiki/H90XO43PblE> because I 
couldn't output the intersection of two filters, each made of several runs. 
I didn't find a built-in function to do so, and I couldn't find a 
satisfying solution online. But I eventually found my own solution, shared 
here.

Say I want to get all the tiddlers that satisfy the following conditions 
(toy example here, could also have a pair of very complex filters):

(has tag Todo OR starts with "a") AND (has tag Howto OR starts with "al")

This is computed by the following code, where the output list is enlist
<setAinterB>, which is displayed by the list-links macro.

<$set name="filterA" filter="[tag[Todo]] [all[]prefix[a]]">
<$set name="filterB" filter="[tag[Howto]] [all[]prefix[al]]">
<$set name="setAunionB" filter="[enlist<filterA>] [enlist<filterB>]">
<$set name="setAnotB" filter="[enlist<filterA>] -[enlist<filterB>]">
<$set name="setBnotA" filter="[enlist<filterB>] -[enlist<filterA>]">
<$set name="setAinterB" filter="[enlist<setAunionB>] -[enlist<setAnotB>] 
-[enlist<setBnotA>]">

<<list-links "[enlist<setAinterB>sort[]]">>

</$set>
</$set>
</$set>
</$set>
</$set>


*Caveat* : if a filter output contains double brackets (say a tiddler named 
"oh what a [[bad]] name") it breaks the enlist processing, and you won't 
have the correct output.


Best,
Eric

-- 
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 tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/aed0f313-a9e9-4104-a2a6-2066f49ddec1%40googlegroups.com.

Reply via email to