Thanks Eric for the elaborate explanation.
"Not reproducible" results are always difficult to live with. Now I
understand.

The noPreParse fix - as expected - does work.

Tnx again,

Ton

On Jul 31, 10:20 pm, Eric Shulman <elsdes...@gmail.com> wrote:
> > So, I can use the *old* script version but I am curious about why the
> > transclusion version does not work (always).
>
> Transclusions use evaluated parameters in the <<tiddler>> macro to
> invoke code.  However, the handler for the tiddler macro has a subtle
> side-effect:
>
> parseParams() -- the function that processes the evaluated parameters
> -- is being called TWICE for each <<tiddler>> macro.... once by the
> core invokeMacro() function (this is done for ALL macros), and again
> by the tiddler macro's handler (so it can retrieve *named* parameter
> values).
>
> Unfortunately, because of the way SetTiddlerColumn (and other similar
> transclusions) operate, the doubled processing results in an error
> ("too much recursion") that stops the code from working as intended.
>
> Fortunately, the good news is that I reported this issue quite some
> time ago, and that my suggested *support* for a fix was added to the
> core, starting with TW 2.5.x.  The solution involves "switching off"
> the pre-parsing done by invokeMacro(), so that only the
> tiddler.handler() parses the parameters and the evaluated params are
> invoked only once.
>
> The core fix is to look for a special flag, 'noPreParse', associated
> with a given macro, that signals it to bypass the default parsing and
> allow the specific macro handler to do all the parsing itself.
>
> Note: for backward-compatibility purposes, the 'noPreParse' flag is
> NOT set by default for any core macros, including the <<tiddler>>
> macro.  This means that the current behavior, including the double-
> processing side effect, is still  in effect, and ensures that existing
> documents won't have any problems after upgrading to the current TW
> core.
>
> Nonetheless, it is of course, 100% completely safe to activate the fix
> when writing NEW content, since nothing would be relying upon the old,
> buggy behavior.
>
> To activate the noPreParse fix for the <<tiddler>> macro, you should
> put the following into a tiddler, tagged with 'systemConfig':
>
> //{{{
> // prevents double processing of <<tiddler>> macro
> config.macros.tiddler.noPreParse=true;
> //}}}
>
> enjoy,
> -e
> Eric Shulman
> TiddlyTools / ELS Design Studios

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To post to this group, send email to tiddlyw...@googlegroups.com.
To unsubscribe from this group, send email to 
tiddlywiki+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/tiddlywiki?hl=en.

Reply via email to