2012-07-26 2 views
3

J'ai utilisé Jinja2 pour créer et rendre des modèles de scripts Bash (entre autres choses) et j'ai manqué le pouvoir d'avoir full python disponible comme dans Mako.Changement possible La syntaxe en début/fin de Mako?

La chose qui me empêche d'utiliser Mako au moment semble plutôt trivial qui est que la ligne de Mako début/fin ${/} des affrontements de syntaxe avec propre syntaxe de Bash (et Jinja2 de ne pas)

donc ce que je veux savoir est: Y at-il un moyen de changer la syntaxe ${/} de Mako pour être quelque chose d'autre, où quelque chose d'autre est quelque chose qui ne heurte pas Bash.

(Sinon, suis-je manque quelque chose évidente?)

Répondre

1

exécuter vos modèles grâce à un preprocessor:

from mako.template import Template 
import re 

def bash_preprocessor(source): 
    source = re.sub(r"\${(.+?)}", r"${'${'}\1${'}'}", source) 
    source = re.sub(r"\^\[(.+?)\]", r"${\1}", source) 
    return source 

t = Template(""" 

BAR='hi' 
BAT='^[hoho]' 
PATH='/path/to/crap' 

EXECUTABLE=${PATH}/${BAR}/${BAT} 

""", preprocessor=bash_preprocessor) 


print t.render(hoho="boo")