Hi Eric,

Thanks for the nice description of how your plugin works - but  still
can't figure what might be causing the problem.  I've tried stepping
through with a debugger, but I'm having no luck.  I'll also try and
modify the code so that it hijacks rather than replaces the core
function, and plays nicely with other plugins ;).

Cheers,

Mark

On Nov 16, 11:59 pm, Eric Shulman <[email protected]> wrote:
> > The plugin modifies the core TiddlyWiki.prototype.getTiddlerText()
> > function and can be found 
> > at:http://htmltiddlersectionsplugin.tiddlyspot.com/
> > The plugin works great, but there is a problem that I have been
> > racking my brain over and can't seem to solve.  If the <<tiddler
> > HtmlTiddler##SectionTitle>> macro is called from inside a wiki-style
> > tiddler it works fine, but if I want to call the macro from within a
> > html-synatax tiddler (i.e. by using Eric's HTMLFormattingPlugin [2])
> > then I get odd text appearing at the bottom of the tiddler.  I think
> > this has something to do with the way the HTMLFormattingPlugin works,
> > but I can't figure out how to get around it.
>
> I don't know what is going on there, but HTMLFormattingPlugin works by
> recursively looking for TEXT nodes after the HTML is processed.  Your
> content is:
>
> <html>
> {{{<<tiddler ...>>}}}
> <<tiddler ...>>
> </html>
>
> First, when the TWCore parser sees <html>...</html>, it creates a SPAN
> container and then the entire block is passed to the browser for HTML
> rendering.  Then, the plugin recursively scans the resulting SPAN for
> TEXT nodes and replaces them with SPAN nodes into which is applies the
> TWCore wikify() function on the text fragment so that any wiki syntax
> it contains is rendered.  If a text node contains a macro syntax, that
> macro gets parsed and rendered.  The <<tiddler>> macro also creates a
> SPAN container for its rendered output.
>
> Thus, the fragment,
>    <html>{{{<<tiddler ...>>}}}</html>
> is first rendered (via the TWCore and browser) as:
>    <span><code><<tiddler ...>></code></span>
> and then HTMLFormattingPlugin finds the "<<tiddler ...>>" TEXT node
> (inside the CODE block) and processes that content, which creates a
> SPAN into which the retrieved tiddler text is rendered by the TWCore,
> producing.
>    <span><code><span>...content from tiddler section...</span></code></
> span>
>
> However, in your particular use-case, the retrieved text is also HTML-
> formatted (surrounded by <html>...</html>).  Thus, the retrieved
> tiddler content is put inside another SPAN and processed by the
> browser and then HTMLFormattingPlugin, resulting in:
>    <span><code><span><span>...content from tiddler section...</span></
> span></code></span>
>
> I don't know why you are getting strange results, but it will take
> some time to figure it out.  I'll let you know if I find anything
> definitive.
>
> Note: there is another issue with your plugin tht is unrelated to the
> HTML formatting problems:
>
> Your plugin does not "modify" the core function, it *REPLACES* it...
> which will BREAK any other plugin that has already modified the
> function.  The proper way to add code to a core function is to
> *hijack* that function.  First, save a copy of the old function:
>    store.coreGetTiddlerText = store.getTiddlerText;
> Then, declare the replacement:
>    store.getTiddlerText = function(tid) { ...
> and, inside that replacement, *invoke the old function first*, to get
> the text as returned by the core (with any other plugin
> modifications):
>    var t=store.coreGetTiddlerText.apply(this,arguments);
>    (note: both "this" and "arguments" are automatically defined by the
> javascript run-time.)
> Then, once you have the text, apply you own code to modify it (i.e.,
> scan for <Hn> HTML heading syntax) and return your desired result.
>
> enjoy,
> -e

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

Reply via email to