【发布时间】:2013-12-03 19:27:52
【问题描述】:
如何调用嵌套宏?
<@replaceA-sToB-s>
<@replaceB-sToC-s Text/>
</@replaceA-sToB-s>
replaceB-sToC-s 简单地将任何“B”替换为“C” replaceA-sToB-s 简单地将任何“A”替换为“B”
【问题讨论】:
标签: freemarker
如何调用嵌套宏?
<@replaceA-sToB-s>
<@replaceB-sToC-s Text/>
</@replaceA-sToB-s>
replaceB-sToC-s 简单地将任何“B”替换为“C” replaceA-sToB-s 简单地将任何“A”替换为“B”
【问题讨论】:
标签: freemarker
如果你想将replaceB-sToC-s 宏的结果传递给replaceA-sToB-s,那么你必须使用这样的东西:
<#assign str><@replaceB-sToC-s "abc" /></#assign>
<@replaceA-sToB-s str />
【讨论】:
@replaceBsToCs 呼叫周围进行捕捉。相反,您可以在 @replaceAsToBs 中执行此操作。但请看我的回答。
像这样:
<#macro replaceAsToBs>
<#local captured><#nested></#local>
${captured?replace('a', 'b')}<#t>
</#macro>
<#macro replaceBsToCs text>
${text?replace('b', 'c')}<#t>
</#macro>
(#t-s 仅用于删除 ${...} 部分周围的多余空格。)然后您将其称为:
<@replaceAsToBs>
<@replaceBsToCs "abcd"/>
</@replaceAsToBs>
【讨论】: