macros confluence

macros - Macro de usuario de confluencia en línea



confluence (1)

¿Cómo crear una macro de confluencia con un cuerpo que produce una salida en línea? La siguiente macro:

## @noparams <font color="red">$body</font>

aplicado a este texto

Before macro [macro starts here]macro body[macro ends here] after macro.

Creará este código HTML:

<p>Before macro </p> <font color="red">macro body</font> <p>after macro.</p>

¿Cómo eliminar las etiquetas <p></p> ?


Este es un problema con Confluence. Para evitar esto, debe usar la salida html. Si el cuerpo o su macro contienen marcado wiki, entonces tendrá que renderizarlo a mano. Mi solución es la siguiente:

## Use this macro to avoid new lines: #macro(doNothing)#end ## ## (Do stuff with body in wiki format, if appropriate) ## ## Convert to html and remove paragraph tags: #set($renderedhtml = "") #if ($body && ($body.length()>0)) #set($globalHelper = $action.getHelper()) #set($renderedhtml = $globalHelper.renderConfluenceMacro("$body").replaceAll("</?[pP]>","")) #end ## ## (Do stuff with body in html format, if appropriate) ## ## Output text: $renderedhtml#doNothing()

EDITAR: Querrá modificar la expresión regular si hay etiquetas p en su macro que quiera conservar. La expresión regular en el código anterior eliminará TODAS las etiquetas p.