Могу ли я изменить разделитель переменных по умолчанию во Freemarker? - PullRequest
3 голосов
/ 04 мая 2010

Я работаю над проектом, в котором я генерирую код / ​​сценарии (в частности, сценарии Perl) через Java и Freemarker. У меня сейчас работает, но мне было интересно, есть ли какой-нибудь способ изменить разделитель переменных по умолчанию ($) во Freemarker?

Или существует другой шаблонизатор Java, который будет использовать переменный разделитель, более подходящий для генерации сценария Perl?

Ответы [ 3 ]

1 голос
/ 14 апреля 2014

Можно предположить, что такая функция будет находиться в том же месте, что и возможность выбора между синтаксисом угловых скобок и синтаксисом квадратных скобок.

http://freemarker.org/docs/api/freemarker/template/Configuration.html

Я не вижу ничего об изменении синтаксиса интерполяции.

Так что я твердо верю этому: нет, вы не можете.

0 голосов
/ 17 апреля 2013

Грамматика для языка шаблонов 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}
0 голосов
/ 04 мая 2010

Переменный разделитель не $ foo, это $ {foo}.

Я не знаю Perl, но чтобы сгенерировать что-то с помощью $, вы делаете:

$${foo} -> $FOO

<#noparse>${</#noparse>${foo}} -> ${FOO}

Очень круто: -)

Я думаю, что лучший способ - сделать макрос для размещения Perl-объектов в ваших интерполяциях, например директива escape / noescape .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...