On Thursday, March 2, 2017 at 3:38:17 PM UTC-8, mauloop wrote:
>
> Here I am, Eric, and thanks for your help. I hope I'll be able to explain 
> clearly.
>
<<str "{{$(currentTiddler)$##$(i)$}}">>
>

When <<str ...>> is invoked outside a macro (your initial, successful 
implementation), the quoted text parameter, "{{$(currentTiddler)$##$(i)$}}" 
is simply passed into the macro, which then expands the $(currentTiddler)$ 
and $(i)$ references, producing the desired result.

However... when the <<str ...>> syntax is moved inside of another macro 
(i.e., the <<table>> macro definition), all $(...)$ references within the 
<<table>> macro are expanded as soon as the macro is invoked.  This 
includes expanding the $(currentTiddler)$ and $(i)$ references within the 
quoted text argument to the <<str>> macro.  Thus, by the time <<str ...>> 
is actually invoked within the <<table>> macro, it's param no longer 
contains the literal "$(currentTiddler)$" text to be passed down to the 
<<str>> macro handler, but has already been replaced by the value of 
$(currentTiddler)$ that was defined when the <<table>> macro was invoked.

To work around this, you can create your own little use-case specific 
helper macro as an alternative to the general-purpose <<str>> macro.

Something like this:
\define showIndexValue() {{$(currentTiddler)$##$(i)$}}

Then, instead of
<<str ...>>
you would just write
<<showIndexValue>>

Note that this new macro achieves the same effect as the <<str ...>> usage 
(i.e., joining together the title (currentTiddler) and index name (i) and 
then retrieving that value using transclusion {{...}}).  However, because 
<<showIndexValue>> does not use parameter passing, the references to 
$(currentTiddler)$ and $(i)$ are left unchanged until <<showIndexValue>> is 
actually invoked, rather than when the containing <<table>> macro is first 
entered.

I hope this explanation doesn't make your head spin too much!

Let me know how it goes.

enjoy,
-e
Eric Shulman
TiddlyTools: Small Tools for Big Ideas! (tm)
InsideTiddlyWiki: The Missing Manuals




-- 
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 post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/db8d06d8-8d55-40bb-b554-d261d76c236b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to