我正在做一个项目,我正在通过 Java 和 Freemarker 生成一些代码/脚本(特别是 Perl 脚本)。我现在可以使用它,但想知道是否有某种方法可以更改 Freemarker 中的默认变量分隔符 ($)?
或者是否有不同的 Java 模板引擎可以使用更适合生成 Perl 脚本的变量分隔符?
我正在做一个项目,我正在通过 Java 和 Freemarker 生成一些代码/脚本(特别是 Perl 脚本)。我现在可以使用它,但想知道是否有某种方法可以更改 Freemarker 中的默认变量分隔符 ($)?
或者是否有不同的 Java 模板引擎可以使用更适合生成 Perl 脚本的变量分隔符?
有人会假设这样的功能与在尖括号语法和方括号语法之间进行选择的能力位于同一位置。
http://freemarker.org/docs/api/freemarker/template/Configuration.html
我看不到任何有关更改插值语法的信息。
所以我坚信:不,你不能。
变量分隔符不是 $foo,而是 ${foo}。
我不知道 perl,但要使用 $ 生成一些东西:
$${foo} -> $FOO
<#noparse>${</#noparse>${foo}} -> ${FOO}
很酷 :-)
我认为最好的方法是制作宏来将 perl 的东西放在你的插值中,比如escape/noescape指令。
模板语言FTL.jj的语法硬编码了${
和}
用于被插值的变量 (an FM_EXPRESSION
),因此您最好的选择可能是按照上面的建议预处理文件。
%{x}
用作 FTL 插值并保持${x}
不变,这个 Perl 单线将工作:
% perl -spi.bak -e "s/\\$/\<#noparse\>\\$\<\/#noparse\>/g,s/\%\{/\\$\{/g" file
前:
%{var}=${value}
后:
${var}=<#noparse>$</#noparse>{value}