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.