Hi,
Here's some design details on the new xwiki rendering component I'm
writing, for which I'd like to have feedback from the dev community.
Sources:
http://svn.xwiki.org/svnroot/sandbox/components/xwiki-rendering/xwiki-rendeā¦
In the new design, macros are parsed and generate "MacroBlock"s events
in the Listener.
Here are some refinements I'm proposing:
* MacroBlock has a traverse(Listener) method.
* In order to make Macros independent on the Listener (this is very
important IMO in order to allow for any kind of transformations) we
need to make the MacroBlocks emit Listener events.
* Since the wiki syntax is not enough to generate all possible
rendering options (for example no wiki syntax for XHTML forms) we have
2 options:
1) add as many Listener events as there are XHTML features or
2) add an onHTMLElement(...) event in the Listener
* Option 2) (onHTMLElement) looks much better IMO (simpler, can evolve
with the HTML spec, faster, etc)
This allows for example to have a iText renderer to generate PDFs from
page content which would be way more difficult if the HTML was passed
as standard text (this would need to reparse again the content of
Listener's onText() calls. Same applies for any Listener/Renderer
since they'll need to have some special handling for HTML.
Of course since WikiModel and Doxia don't have HTML events in their
Listener/Sink we'll need to perform some mapping when we want to use
bridge to them. It probably means we'll need to output the HTML
elements as simple text events for them.
WDYT?
Mikhail, I'm curious to know how you're handling this use case in
wikimodel.
Thanks
-Vincent