On Thursday, February 4, 2016 at 2:58:35 PM UTC-8, David Allen wrote:
>
> Actually, let me correct that. What I showed is actually working fine.
> What's not working is when I try to pass a variable created by a list
> widget into a macro when the tiddler stored in currentTiddler contains
> spaces in its title. I'm doing the following:
>
> <$macrocall $name="ezlink" input=<<currentTiddler>>/>
>
> \define ezlink(input)
>> <$link to=$input$>$input$</$link>
>> \end
>>
>
summary:
you need to add quotes around $input$ when used as a parameter in a
widget...
details:
In the $macrocall, you correctly set input=<<currentTiddler>> ... where the
<<...>> syntax retrieves the value from the variable. However, when the
macro is invoked, any embedded variables (e.g., $input$) are replaced by
the corresponding value passed to the macro. Thus, in your macro, if value
of the input param is FOO, then the macro output is
<$link to=FOO>FOO</$link>
In contrast, if the input value is FOO BAR, then the macro output is
<$link to=FOO BAR>FOO BAR</$link>
Notice that, although the *text* of the link is FOO BAR, the parameter in
the $link widget only recognizes the value FOO (i.e., up to the first
space). The remainder of the value is simply treated as another widget
param -- one that is badly formed, as it doesn't follow the name="value"
(or name=<<variable>>... or name={{reference}}) syntax.
As noted above, the fix is to add quotes when assembling the $link widget
params, like this:
<$link to="""$input$""">$input$</$link>
This ensures that the resulting output encloses the parameter so it is
treated as a single value that contains quotes, rather than two separate
params; i.e.,
<$link to="""FOO BAR""">FOO BAR</$link>
Note that I've used the *tripled* quotes syntax around the param value (a
TW5 extension to the HTML syntax). This ensures that if the param value
contains a regular quote ("), it won't be treated as the ending delimiter
for the value. i.e., the following syntax:
<$link to="$input$">$input$</$link>
would result in an invalid result when passed FOO"BAR:
<$link to="FOO"BAR">FOO"BAR</$link>
Notice how the embedded quote following FOO *ends* the parameter value,
leaving BAR" as invalid junk, but when triple-quoting, the result would be
<$link to="""FOO"BAR""">FOO"BAR</$link>
which allows the TW5 core to treat the embedded quote as just a regular
character. QED.
enjoy,
-e
Eric Shulman
TiddlyTools / ELS Design Studios
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 [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/7120e4ff-2be2-42c0-b04c-a0a8b78d8783%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.