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/src... 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