我正在开发一个项目,我通过Java和Freemarker生成一些代码/脚本(特别是Perl脚本)。我现在有它工作,但想知道是否有某种方法可以更改Freemarker中的默认变量分隔符($)?
或者是否有一个不同的Java模板引擎会使用更适合生成Perl脚本的变量分隔符?
答案 0 :(得分:1)
可以假设这样的特征与在尖括号语法和方括号语法之间进行选择的能力位于同一位置。
http://freemarker.org/docs/api/freemarker/template/Configuration.html
我无法看到有关更改插值语法的任何内容。
所以我强烈相信:不,你不能。
答案 1 :(得分:0)
变量分隔符不是$ foo,而是$ {foo}。
我不知道perl,但要用$生成一些东西:
$${foo} -> $FOO
<#noparse>${</#noparse>${foo}} -> ${FOO}
非常酷: - )
我认为最好的方法是让宏在你的插值中加入perl,比如escape/noescape指令。
答案 2 :(得分:0)
模板语言FTL.jj的语法对插入的变量(${
)的}
和FM_EXPRESSION
进行硬编码,因此您的最佳选择可能是如上所述预处理文件。
使用%{x}
作为FTL插值并保持${x}
不变,这个Perl单线程会起作用:
% perl -spi.bak -e "s/\\$/\<#noparse\>\\$\<\/#noparse\>/g,s/\%\{/\\$\{/g" file
在:
%{var}=${value}
后:
${var}=<#noparse>$</#noparse>{value}