Встроенный макрос пользователя confluence

как создать макрос слияния с телом, который производит встроенный выход? Следующий макрос:

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

в тексте

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

создаст этот HTML-код:

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

Как убрать <p></p> теги?

1 ответов


это проблема с слиянием. Чтобы избежать этого, вы должны использовать вывод html. Если тело или макрос содержат разметку wiki, вам придется сделать это вручную. Мой обходной путь выглядит следующим образом:

## 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()

EDIT: вы захотите изменить регулярное выражение, Если в вашем макросе есть теги p, которые вы хотите сохранить. Регулярное выражение в приведенном выше коде удалит все теги p.