2012-07-26 118 views
3

我一直在使用Jinja2来创建和渲染Bash脚本的模板(除其他外),我一直都缺少像Mako一样提供完整python的能力。可能的更改Mako的内联开始/结束语法?

,让我从此刻正在使用的Mako的事情似乎很微不足道这是马可的直列开始/结束${/}语法上有冲突猛砸自己的语法(和的Jinja2的不)

所以我想知道的是:有什么方法可以将Mako的开始/结束语句更改为其他内容,而其他内容则不会与Bash冲突。

(否则,我是失去了一些东西明显?)

回答

1

通过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") 
相关问题