Werner,

I am confident Eric is spot on. It was the correct understanding of this 
issue and the use of wikify that stopped me getting stuck regularly. I have 
being trying to get some activity on this because it is a barrier to new 
users. Perhaps this quick note will help as a rule until you fully 
understand it.

   - If you need a value to be "evaluated" from wikitext to use within 
   subsequent Wikitext logic use the wikify widget at the last possible moment.
      - This guide suggests trying to use wikify in external macros is a 
      path to disappointment
   - Make sure you close the wikify appropriately (as with all other 
   widgets) or unusual and broken result will occur
   - Its only at the final render of the tiddler that all things are 
   wikified automatically so a standalone `<<varormacro>>` appears to produce 
   the result you want, but as Eric said the result inside the wikitext 
   (before evaluation) without wikification it is not evaluated at that point.
   - It is fine to use the same name when wikifying to stop code complexity

\define macroname() blah blah
<$wikify name=macroname text="<<macroname>>">
   use <<macroname>> here where it is the wikified version, or pre-evaluated
</$wikify>

In closing

   - If some of our community developers see this what would be better is 
   something like the following;
      - Allow any variable to be referenced in its "evaluated state" eg 
      ((macroname)) would effectively wikify inline
      - Automatically wikify/evaluate variables or macros when used in 
      filters and other appropriate places.
   
Regards
Tones


On Wednesday, August 19, 2020 at 7:15:51 AM UTC+10, Eric Shulman wrote:
>
> On Tuesday, August 18, 2020 at 10:06:59 AM UTC-7, Werner wrote:
>>
>> I am referring to a tiddler called activeDossier whose contents refers to 
>> a JSON data tiddler. Tiddler content 
>> is {{$:/data/CI/companyRegister##1/name}}.
>>
>> <$set name="theCompany" value={{$:/data/CI/activeDossier}}>
>> !<$vars tv-wikilinks=no><<theCompany>></$vars> <!-- gets displayed 
>> properly -->
>> <$list filter="[!is[system]search<theCompany>]" >
>> <<currentTiddler>>
>> </$list>
>> </$set> 
>>
>
> The problem is that you are doing a "double transclusion".  That is, the 
> value of <<theCompany>> retrieved via transclusion isn't the actual name of 
> the company as text, but rather a secondary transclusion from a JSON 
> tiddler (i.e., {{$:/data/CI/companyRegister##1/name}}).  When you render 
> <<theCompany>>, TiddlyWiki automatically parses that transclusion and 
> displays the actual value.  However, when you use search<theCompany> in the 
> filter, the value isn't parsed any further, and you are literally searching 
> for the transclusion syntax, not the actual company name as text.
>
> To resolve this, use <$wikify> instead of <$set> to fetch theCompany 
> value, like this:
> <$wikify name="theCompany" text={{$:/data/CI/activeDossier}}>
> !<$vars tv-wikilinks=no><<theCompany>></$vars> <!-- gets displayed 
> properly -->
> <$list filter="[!is[system]search<theCompany>]" >
> <<currentTiddler>>
> </$list>
> </$wikify>
> The $wikify gets the value from the activeDossier tiddler AND then also 
> parses that value, so the result is the desired text value from the 
> underlying $:/data/CI/companyRegister tiddler.
>
> When you use it in the search<theCompany> filter, it's already fully 
> resolved to be the actual company name as text, so the search should work 
> as you intend.
>
> -e
>

-- 
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/c2b45772-6cda-45b8-862a-bfefd5ba83b9o%40googlegroups.com.

Reply via email to