builder.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:pando-core 作者: DLR-RY 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号