我使用FreeMarker模板引擎從Web服務的抽象描述中生成一些php類。我的問題是,當我在FreeMarker模板中調用一個宏時,宏在宏調用之前插入沒有左空格的文本。FreeMarker:使用宏時保持標識
exampleTemplate.ftl:
<?php
class ${class.name} {
<@docAsComment class.doc/>
<#list class.fields as field>
$${field.name};
</#list>
<#-- ... -->
}
?>
<#macro docAsComment doc>
/*
<#if doc.title != "">
* ${doc.title}
</#if>
<#list doc.content as content>
<#if content != ""> * ${content}</#if>
</#list>
*/
</#macro>
這會產生這樣的事情:
<?php
class foo {
/*
* foo
* bar foo, bla
*/
$a;
$b;
}
?>
一個解決辦法是,提交前導空格作爲參數傳遞給宏,但使模板只能更難讀。有更好的解決方案嗎?
感謝您的答覆!隨着「使模板更難閱讀」,我的意思幾乎是你所想的,它使宏觀變得更加複雜,並且不那麼容易理解。看來提交縮進級別是解決問題的最合理的方式。 – 2013-03-27 16:13:36
您可以隨時在宏中添加註釋標題,以幫助澄清它的功能。 – 2013-03-27 16:22:48
有在您的代碼段一個類型,它應該是: '...'' $ <#local spc> {? 「」 left_pad(縮進* 4)}#local>'' ...' – 2013-03-28 08:22:49