Nice! I just posted something similar upthread. I really like your 2-step
nested macro approach to simplify the syntax.
If you really want the simpler syntax, you can do a 2 step process, like:
\define mylink2(link) [[$link$]]
\define mylink(link) <$macrocall $name=mylink2 link=$link$/>
<<mylink {{!!myfield}}>>
On Saturday, September 16, 2017 at 3:48:17 PM UTC-7, Mark S. wrote:
>
> Your assumption about [[{{!!field}}]] is pretty common. Everyone would
> like it if it worked that way.
>
> What the parser does is look for anything between [[ and ]] and interpret
> that text literally. When you try to put {{!!field}} between [[ and ]],
> it's like when Wiley Coyote draws a door on the side of a canyon wall. Of
> course he doesn't create a door -- just the image of a door. So when he
> tries to go throw, he hits solid rock. Basically, whenever you use
> structures like {{!!field}} it will be interpreted literally everywhere
> except when called by a Widget.
>
> Continuing the analogy, when the Roadrunner tries the drawn-on door, he
> goes right through. This is undoubtedly because the Roadrunner is
> leveraging the power of macros. Or widgets. My analogy is deteriorating a
> bit. Oh well.
>
> What you want is for the *value* of {{!!field}} to get pasted between [[
> and ]]. This pasting is concatenation, and is done with macros.
>
> If you put your text into a macro, like:
>
> \define mylink(link) [[$link$]]
>
> Then you might hope you could call it like:
>
> <<mylink {{!!field}}>>
>
> But this still doesn't work. You need to invoke it using some widget.
> Typically this is the macrocall widget, the set (or vars) widget, or (like
> you used) a use-case specific widget (e.g. <$link>).
>
> You can invoke it with macrocall like:
>
> <$macrocall $name=mylink link={{!!linkto}}/>
>
> Or, taking a different approach, you can change the macro to:
>
> \define mylink() [[$(link)$]]
>
> and invoke it inside of a <$vars> widget which grabs the value of
> !!myfield and turns it into a local variable (e.g $(link)$ in our example).
> Like:
>
> <$vars link={{!!myfield}}>
> <<mylink>>
> </$vars>
>
> If you really want the simpler syntax, you can do a 2 step process, like:
>
> \define mylink2(link) [[$link$]]
> \define mylink(link) <$macrocall $name=mylink2 link=$link$/>
>
> <<mylink {{!!myfield}}>>
>
> There's probably other ways to approach this, including the Wikify widget,
> but this gives a general direction.
>
> HTH
>
> Mark
>
> Beep! Beep!
>
>
>
>
> On Saturday, September 16, 2017 at 11:35:59 AM UTC-7, Jim wrote:
>>
>> An example assumption I made.
>>
>> You use [[ ]] to create links. You use {{!!field}} to include a field.
>> Therefore, [[{{!!field}}]] will create a link using the value of the
>> field.
>>
>>
--
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 post to this group, send email to [email protected].
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/73525499-d6fb-49f7-91a6-a6d784ffe528%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.