Hi, On Thu, Oct 22, 2009 at 10:54, Asiri Rathnayake <[email protected]> wrote: > Hello Devs, > > As I understand, If a wiki macro supports inline mode and is executed as an > inline macro, it must be true that the output generated by the macro does > not contain block elements (otherwise the result will not be inline). From > the wiki macro bridge code we have the following check: > > <code> > List<Block> result = xdom.getChildren(); > // If in inline mode remove any top level paragraph. > if (context.isInline()) { > this.parserUtils.removeTopLevelParagraph(result); > } > </code> > > This only removes the top-level paragraph block. It's possible that inside > the content there are more block level elements, I think this is where we > need the inline parser. > > Another problem i discovered is if i have a wiki macro with macro code: > > <code> > {{velocity}} > ..... > {{/velocity}} > </code> > > This makes the {{velocity}} macro behave in a non-inline fashion regardless > of the wiki macro's intentions. Further more, the paragraph block generated > by the {{velocity}} macro is not stripped by the check I mentioned above. > This is because the paragraph block resides inside a MacroMarkerBlock (so it > is not a top-level paragraph). > > A workaround I found for this problem is to have something like: > > <code> > {{html}}{{/html}}{{velocity}} > ..... > {{/velocity}} > </code> > > This is only a hack to force the {{velocity}} macro ro behave in an inline > fashion. > > Now I'm wondering if we should wait for the inline parser to be available to > fix this or do some custom hacking to get rid of the block elements > generated while executing in inline mode. wdyt?
I depends what priority we put in inline parser but for now it's not at the top of the list. In the meantime since it sounds too much of a pain for wiki macros use case a workaround you could use is to make the found macro in the XDOM inline by calling MacroBlock#setInline(true) (to be added) before launching transformations. The issue with inline parser is that having inline parser now mean create a totally new parser from scratch and support 2 different parsers instead of one for each syntax which mean at least xwiki/2.0 and xhtml/1.0 (and soon 2.1 syntax). (Even if inline parser is a lot easier to do than "normal" parser and we can maybe reuse some parts in XHTML parser). The difficult part is not really to do xwiki/2.0 inline parser but the fact that it's just one syntax among others. Now since we starting to have too many use cases for inline parser maybe we should put it at the top of the list. We did not done it until now because of the duplicate thing waiting for a genius idea i guess ;) I would me +0.5 to start working on inline parser api and quickly do a duplicate based xwiki/2.0 implementation (and use some remove top paragraph workaround for others syntaxes implementations) waiting for a better generic way at WikiModel level. WDYT ? Vincent ? > > Thanks. > > - Asiri > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

