£Hi!

Thank you, this one is functionnal. BTW, I was already in 5.1.23-prerelease.

But how can I get the doc form this new trim operator?

Le samedi 24 octobre 2020 à 08:58:18 UTC+2, Xavier a écrit :

> Hi Jean-Pierre,
>
> If you don't mind using the TiddlyWiki prerelease, I suggest the brand new 
> subsort filter operator as well as the newly parametrised trim operator:
>
> \define glossaryLetter()
> <ul>
> <$vars initial={{{ [<currentTiddler>lowercase[]] }}}>
> <$vars initial_regexp={{{ [<initial>compare:string:eq[e]] 
> +[then[(e|é)]else<initial>addprefix[^]] }}}>
> <$vars tail_filter="[trim:prefix[e]trim:prefix[é]]">
> <$list filter="[tag[glossaire]regexp<initial_regexp>] 
> +[sortsub<tail_filter>]">
> <li><$link/></li>
> </$list>
> </$vars>
> </$vars>
> </$vars>
> </ul>
> \end
>
> Cheers,
> -- Xavier
>
>
> On Thu, Oct 22, 2020 at 11:50 PM Jean-Pierre Rivière <
> [email protected]> wrote:
>
>> I have not been able to achieve what I wanted in this case with 
>> subfilter, but I've been successul with regexp. So I post it here.
>>
>> \define glossaryLetter()
>> <$set name="initial" filter="[{!!title}lowercase[]]">
>> <$set name="others" filter="[<initial>compare:string:eq[e]then[é]]">
>> <$wikify name="pattern" text="""(?i)^([(]([^)]+[)] )?)?[<$macrocall 
>> $name="initial"/><$macrocall $name="others"/>]""" output="text">
>> <ul>
>> <$list filter="[tag[glossaire]regexp<pattern>]"><li><$link/></li></$list>
>> </ul>
>> </$wikify></$set></$set>
>> \end
>>
>> used in a tag name "E" or 3B" for instance. I finally decided to 
>> hard-code the "e" case. It's simpler and yet I have retain what I would get 
>> if I used a dictionary so that the rest of the code would not be affected 
>> if I change my mind. Note that with regular expression I can now handle 
>> entry like "(really good) song for folk guitar" at both r or s (my choice 
>> to have it at both and not only at s) but this one is not sorted 
>> accordingly (would require a sorting function, not sure I can do it without 
>> js and it only concern one tiddler so far).
>>
>> I would really appreciate a solution with subfilter.
>> Le jeudi 22 octobre 2020 à 18:57:26 UTC+2, Jean-Pierre Rivière a écrit :
>>
>>> 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/eb2b1a3b-1d93-4950-8308-43f8c14ee7d3n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/tiddlywiki/eb2b1a3b-1d93-4950-8308-43f8c14ee7d3n%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/64e7c2bf-46d0-417f-a104-3b2c0df0c0e1n%40googlegroups.com.

Reply via email to