Daniel Friesen wrote:
setHook (old style tag hooks), and
setFunctionTagHook (new style function tag hooks).
setHook and setFunctionTagHook both set<tag> style hooks. Originally we
just had setHook, it had one short argument list. Later on that argument
list was changed to add $frame to it. the newer setFunctionTagHook uses
a different argument order, which appears to be the same set of
arguments, just the first two and last two seam to be flipped.
I'm not exactly sure of the difference, but
setFunctionTagHook definitely exists because
of preprocessor improvements and because applying the new parsing
behaviors to setHook would result in different behavior for tags or code
bugs... perhaps attr="{{{1}}}"'s are expanded in setFunctionTagHook's
because they are parsed by the preprocessor.
setFunctionTagHook was added so that
you could expand variables inside
tags. Then setHook() got added $frame and the need for such hook type
disappeared. I'd like to kill it, although it has been there for some
time (if any list reader uses it, please stand up).
or what the setFunctionHook style $flags are for
It's unused.
The primary difference is that setHook<tag>
hooks are parsed in an old
style, iirc pre-1.12 style. setFunctionTagHook are parsed by the
preprocessor that parses parser functions, the contents aren't
preprocessed but it's still parsed by the preprocessor.
The preprocessor
doesn't mind about it. The preprocessor makes one block
with everything between<tags> whereas it enters into braces blocks. No
matter which kind of function tag is done, the extension itself need to
recursiveTagParse it.
I think there's a little more difference between setHook
and
setFunctionTagHook than you mention.
At the very least, extensionSubstitution outputs a function tag hook
directly, while putting a normal tag hook into the general strip state
and outputting a marker.
~Daniel Friesen (Dantman, Nadir-Seen-Fire) [