Hi Xavier!

I've already used subfilter. As I used it and understood it, it is of use 
as a substitude for mapping within filters. But yes, I can map an array of 
just one element. I did not think of that.

As for dictionnary, I was already planning its use. But to mark "é" as a 
co-letter for "e", nothing more. But from there, my problem is to build 
dynamically the filter for each letter and especially for "e".

Subfilter allow writing something like 

subfilter<first-select-filter> prefix[e]

but not something like 

subfilter<first-select-filter> <second-filter>

And since there is no filter that could have conditional filter (we can 
only have conditional strings with "then" and "else"), I cannot see where 
subfilter may help me.

So I looked for another way: using "regexp" instead of "prefix". Where I 
would use "regexp<re>" where re is "^[eé]" or "^[a]" for instance. But it 
doesn''t work, as I get all the titles, and not only the one beginning with 
"e" or "é". See my code for use within "E" tiddler below:

\define glossy()
<$set name="initial" filter="[{!!title}lowercase[]]">
<$set name="others" value="é">
<$set name="pattern" value="^[<<initial>><<others>>]">
filter <<filter>>
<ul>
<$list filter="[tag[glossaire]regexp<pattern>] 
+[sortan[]]"><li><$link/></li></$list>
</ul>
</$set></$set></$set>
\end

<<glossy>>

with the control of "others", I'll be able to achieve my goal. But I have 
difficulty with regexp (but not with regular expressions per se) which I 
shall address in another topic.



Le mercredi 21 octobre 2020 à 13:23:56 UTC+2, Xavier a écrit :

> Hi Jean-Pierre,
>
> I was about to point you to dictionaries 
> <https://tiddlywiki.com/#DictionaryTiddlers> and suggest that you use 
> getindex <https://tiddlywiki.com/#getindex%20Operator><>, but now I'm not 
> sure if I understand your issue correctly. One sure thing however: you 
> cannot insert a filter string like <<special-case>> into an existing filter 
> expression by simply referencing the string variable. This is the main 
> reason of the errors you get. Instead, you need to use the subfilter 
> <https://tiddlywiki.com/#subfilter%20Operator> operator.
>
> Cheers,
> -- Xavier
>
>
> On Wed, Oct 21, 2020 at 11:35 AM Jean-Pierre Rivière <
> [email protected]> wrote:
>
>> Hi Tones,
>>
>> My problem is not so much the order of the letter as of now. However, 
>> your input may well serve me.
>>
>> Non, my real concerne is that I am not successfull in getting a special 
>> filter for e, even though I already have this special case ready. I'm 
>> unable to connect it dynamically.
>>
>> I have seen in an other thread that I can do things like <$sort 
>> filter=<<my-filter>>/>
>>
>> So today I tried to build the complete filter. But I've not been 
>> sucessful at that. My attempt:
>>
>> first, the filter I need for e (here within a list widget):<$set 
>> name="special" filter="[<initial>compare:string:eq[e]<special-case>]">
>>
>> <$list 
>> filter="[tag[glossaire]prefix<initial>][tag[glossaire]prefix[é]]+[sortan[]]">
>>
>> for all the other letter, that is only:
>>
>> $list filter="[tag[glossaire]prefix<initial>]"/>
>>
>> (it seems I don't need sorting then. Is that a coincidence or is it a 
>> general truth?)
>>
>> What I coded:
>>
>> \define glossy()
>> <$set name="initial" filter="[{!!title}lowercase[]]">
>> <$set name="special-case" value="=[tag[glossaire]prefix[é]]+[sortan[]]">
>>
>> <$set name="special" 
>> filter="[<initial>compare:string:eq[e]<special-case>]">
>>
>> special <<special>> now defined
>>
>> <$set name="ext-filter" value="[tag[glossaire]prefix<initial>]<$macrocall 
>> $name=special>>">
>>
>> ext-filter <<ext-filter>> ready
>>
>> <ul>
>> <$list filter=<<ext-filter>>>
>>    <li><$link/></li>
>> </$list>
>> </ul>
>> </$set>
>> </$set>
>> </$set>
>> \end
>>
>> My results:
>>
>> special =[tag[glossaire]prefix[é]]+[sortan[]] now defined
>>
>> ext-filter [tag[glossaire]prefix]=[tag[glossaire]prefix[é]]+[sortan[]] 
>> ready
>>
>> en-tête de colonne ou de ligne
>> ensemble de pages
>> environnement maîtrisé
>> <$macrocall
>> $name=special>>
>>
>> If I omit the double quotes arount the filter value in setting 
>> ext-filter, I'm getting a grammar error (no big surprise!)/
>>
>> Le mercredi 21 octobre 2020 à 01:08:50 UTC+2, TW Tones a écrit :
>>
>>> Other "half baked" ideas,
>>>
>>>
>>>    - é list-before or list-after e
>>>    - On tiddlywiki.com see the 
>>>    <<tag "Order Operators <https://tiddlywiki.com/#Order%20Operators>">>
>>>    
>>>    
>>> Regards
>>> Tones
>>>
>>> On Wednesday, 21 October 2020 10:06:13 UTC+11, TW Tones wrote:
>>>>
>>>> Jean-Pierre,
>>>>
>>>> Just a quick idea not thought through
>>>>
>>>> In the pre-release there is the sortby operator. 
>>>>
>>>> Perhaps having a sort macro
>>>> \define sorter() A a B b C c D d E é e ....
>>>> Then sortby<sorter>
>>>>
>>>> You may need to split[] the letters to obtain the first letter etc.
>>>>
>>>> Regards Tones
>>>>
>>>>
>>>> On Wednesday, 21 October 2020 09:50:11 UTC+11, Jean-Pierre Rivière 
>>>> wrote:
>>>>>
>>>>> In French, a glossary is as simple as in English except for the letter 
>>>>> E where we also some entry starting with É to take into account.
>>>>>
>>>>> This can be done like this:
>>>>>
>>>>> <ul>
>>>>> <$list 
>>>>> filter="[tag[glossaire]prefix<initial>]=[tag[glossaire]prefix[é]]+[sortan[]]"><li><$link/></li>
>>>>> </ul>
>>>>>
>>>>> where initial is a variable containing "e" (my glossary is all 
>>>>> lowercase, and each word in the entry has a tiddler tagged "glossaire").
>>>>>
>>>>> But I want to build my glossary automatically. How can I make a 
>>>>> special case for the E letter? My difficulty is to extend my filter (this 
>>>>> is the part starting from the = sign). I am open t any way to achieve 
>>>>> this.
>>>>>
>>>>> I have tried to build a string containing 
>>>>> "=[tag[glossaire]prefix[é]]+[sortan[]]" and to add it if initial is e, 
>>>>> but 
>>>>> this does not work as I have written it:
>>>>>
>>>>> \\define glossy()
>>>>> <$set name="initial" filter="[{!!title}lowercase[]]">
>>>>> <$set name="special-case" 
>>>>> value="=[tag[glossaire]prefix[é]]+[sortan[]]">
>>>>>
>>>>> <$set name="special" 
>>>>> filter="[<initial>compare:string:eq[e]then<special-case>]">
>>>>>
>>>>> special <$macrocall $name="special"> now defined
>>>>>
>>>>> <ul>
>>>>> <$list filter="[tag[glossaire]prefix<initial>]<$macrocall 
>>>>> $name="special"/>">
>>>>>    <li><$link/></li>
>>>>> </$list>
>>>>> </ul>
>>>>> </$set>
>>>>> </$set>
>>>>> </$set>
>>>>> \end
>>>>>
>>>>> When I use <<glossy>> in the "E" tiddler, all I can see is:
>>>>>
>>>>> special =[tag[glossaire]prefix[é]]+[sortan[]]
>>>>>
>>>>> and nothing else. the thing printed seems OK but is that what it seems 
>>>>> to be? The process clearly seems to be interrupted.
>>>>>
>>>> -- 
>> 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/1f645183-dce9-4a0c-9679-4b33f7d27cf3n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/tiddlywiki/1f645183-dce9-4a0c-9679-4b33f7d27cf3n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/42862152-7028-482b-8a6b-b429a5db29f0n%40googlegroups.com.

Reply via email to