2010-05-04 16 views
3

Je travaille sur un projet où je génère du code/scripts (en particulier des scripts Perl) via Java et Freemarker. Je l'ai pour l'instant, mais je me demandais s'il y avait un moyen de changer le délimiteur de variable par défaut ($) dans Freemarker?Puis-je changer le délimiteur de variable par défaut dans Freemarker?

Ou existe-t-il un moteur de modèle Java différent qui utiliserait un délimiteur de variable plus approprié pour générer un script Perl?

Répondre

0

Le délimiteur de variable n'est pas $ foo, il est $ {foo}.

Je ne sais pas perl, mais pour générer quelque chose avec $ que vous faites:

$${foo} -> $FOO 

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

:-) Très cool

Je pense que la meilleure façon est de faire macro pour mettre les choses dans votre perl interpolations, comme la directive escape/noescape.

+1

S'il vous plaît apprendre à modifier démarquage: http://stackoverflow.com/editing-help – daxim

+0

Ce n'est pas exactement ce que je cherchais. Je veux utiliser un délimiteur complètement différent de "$" pour Freemarker. Pas sûr que ce soit possible. Ce que tu as là est vrai et gentil, mais pas exactement ce dont j'ai besoin. – JamesD

+0

OK. Si vous décidez de continuer avec Freemarker, postez votre question sur la liste de diffusion de l'utilisateur. Cette liste est très réactive et les personnes sont très intéressantes. – Istao

0

La grammaire pour la langue modèle FTL.jj dur codes pour la variable ${ et } (un FM_EXPRESSION) étant interpolées, de sorte que votre meilleure option peut être de pré-traiter le fichier comme suggéré ci-dessus.

En utilisant %{x} comme l'interpolation FTL et en laissant ${x} intacte, ce Perl one-liner fonctionnerait:

% perl -spi.bak -e "s/\\$/\<#noparse\>\\$\<\/#noparse\>/g,s/\%\{/\\$\{/g" file 

Avant:

%{var}=${value} 

Après:

${var}=<#noparse>$</#noparse>{value}