可能的更改Mako的内联开始/结束语法?
问题描述:
我一直在使用Jinja2来创建和渲染Bash脚本的模板(除其他外),我一直都缺少像Mako一样提供完整python的能力。可能的更改Mako的内联开始/结束语法?
,让我从此刻正在使用的Mako的事情似乎很微不足道这是马可的直列开始/结束${
/}
语法上有冲突猛砸自己的语法(和的Jinja2的不)
所以我想知道的是:有什么方法可以将Mako的开始/结束语句更改为其他内容,而其他内容则不会与Bash冲突。
(否则,我是失去了一些东西明显?)
答
通过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")