Hi Bogdan,
On Feb 15, 2011, at 2:41 PM, Bogdan Flueras wrote:
Hello devs,
I'm working on some project outside XWiki which uses your rendering API.
Managed to wire everything and to define my custom macro, wrote some unit
tests but when I use another wiki dialect except XWIKI_2_0 (for instance
Creole) in the Converter, my macro is not recognized.
See sample code below:
// Initialize Rendering components and allow getting instances
ecm = new EmbeddableComponentManager();
ecm.initialize(this.getClass().getClassLoader());
Converter converter = ecm.lookup(Converter.class);
//Register my special custom macros
ComponentAnnotationLoader loader = new ComponentAnnotationLoader();
List<ComponentDescriptor> compDescriptors =
loader.getComponentsDescriptors(MySpecialMacro.class);
ecm.registerComponent(compDescriptors.get(0));
Converter converter = ecm.lookup(Converter.class);
WikiPrinter printer = new DefaultWikiPrinter();
// HERE IS THE PROBLEM WITH MY CUSTOM MACRO
converter.convert(new StringReader("{{link path='foo'}}"),
Syntax.CREOLE_1_0, Syntax.XHTML_1_0, printer);
So my problem is that I'd like to instruct the Creole parser or any other
parser except XWIKI_2 to correctly parse my custom macro.
I might be wrong, but I guess I'll have to implement some new parser to suit
my needs. In respect to that I've dug into the Converter class, saw it's
instantiation strategy, then followed the story until I've encountered
IWikiParser and all its subclasses (XWikiParser, CreoleParser etc ) which
I'm unable to find on the repository.
Indeed you'd need to check if the wikimodel's creole parser supports macros.
The source code is here:
http://code.google.com/p/wikimodel/
The Creole grammar is here:
http://code.google.com/p/wikimodel/source/browse/trunk/org.wikimodel.wem/sr…
As you can see there, it doesn't support macros and thus is not going to send an
begin/endMacro events to XWiki's listeners.
If you really want to use the Creole syntax you'd need to provide a patch for the
wikimodel project.
However why do you need Creole and can't you use XWiki Syntax 2.0 instead? XWiki
Syntax 2.0 is based on Creole (it's a superset).
Thanks
-Vincent
Could you please point me in the right direction?
Thank you
--
ing. Bogdan Flueras