def _template(self, filename, filters=None, alternate_marking=False):
""" Open a template file
"""
def filter_wordwrap(value, width=79):
return '\n\n'.join([textwrap.fill(str, width) for str in value.split('\n\n')])
def filter_indent(value, level=0, prefix=""):
return ('\n' + '\t' * level + prefix).join(value.split('\n'))
def global_abort_helper(msg):
raise BuilderException(msg)
if filename.startswith('#'):
name = filename[1:]
loader = jinja2.PackageLoader('pando', 'resources')
else:
# if not os.path.isabs(filename):
# relpath = os.path.dirname(os.path.abspath(__file__))
# path = os.path.join(relpath, path)
path = os.path.dirname(filename)
name = os.path.basename(filename)
loader = jinja2.FileSystemLoader(path)
if alternate_marking:
environment = jinja2.Environment(
block_start_string='<%',
block_end_string='%>',
variable_start_string='<<',
variable_end_string='>>',
comment_start_string='<#',
comment_end_string='#>',
line_statement_prefix='##',
line_comment_prefix='###',
loader=loader,
undefined=jinja2.StrictUndefined,
extensions=["jinja2.ext.loopcontrols"])
else:
environment = jinja2.Environment(
line_statement_prefix='##',
line_comment_prefix='###',
loader=loader,
undefined=jinja2.StrictUndefined,
extensions=["jinja2.ext.loopcontrols"])
environment.filters['xpcc.wordwrap'] = filter_wordwrap
environment.filters['xpcc.indent'] = filter_indent
environment.globals['abort'] = global_abort_helper
if filters:
environment.filters.update(filters)
template = environment.get_template(name, globals=self.globals)
return template
评论列表
文章目录