Пример #1
0
    def testModule(self):
        foo_node = parse("""
        def func1
          div
            ./func2

        def func2
          div
            bar/func3
        """)
        bar_node = parse("""
        def func3
          div "Text"
        """)
        foo_node = NamesResolver('foo').visit(foo_node)
        bar_node = NamesResolver('bar').visit(bar_node)

        node = collect_defs([foo_node, bar_node])
        env = Environ(def_types(node))
        node = check(node, env)

        modules = split_defs(node)

        foo_node = modules['foo']
        bar_node = modules['bar']

        foo_node = NamesUnResolver('foo').visit(foo_node)
        bar_node = NamesUnResolver('bar').visit(bar_node)

        foo_module = compile_module(foo_node)
        _exec_in(compile(foo_module, '<kinko:foo>', 'exec'), {})
        self.compareSources(
            dumps(foo_module),
            """
            def func1(ctx):
                ctx.buffer.write('<div>')
                func2(ctx)
                ctx.buffer.write('</div>')

            def func2(ctx):
                ctx.buffer.write('<div>')
                ctx.lookup('bar/func3')(ctx)
                ctx.buffer.write('</div>')
            """,
        )
        bar_module = compile_module(bar_node)
        _exec_in(compile(bar_module, '<kinko:bar>', 'exec'), {})
        self.compareSources(
            dumps(bar_module),
            """
            def func3(ctx):
                ctx.buffer.write('<div>Text</div>')
            """,
        )
Пример #2
0
    def testModule(self):
        foo_node = parse("""
        def func1
          div
            ./func2

        def func2
          div
            bar/func3
        """)
        bar_node = parse("""
        def func3
          div "Text"
        """)
        foo_node = NamesResolver('foo').visit(foo_node)
        bar_node = NamesResolver('bar').visit(bar_node)

        node = collect_defs([foo_node, bar_node])
        env = Environ(def_types(node))
        node = check(node, env)

        modules = split_defs(node)

        foo_node = modules['foo']
        bar_node = modules['bar']

        foo_node = NamesUnResolver('foo').visit(foo_node)
        bar_node = NamesUnResolver('bar').visit(bar_node)

        foo_module = compile_module(foo_node)
        _exec_in(compile(foo_module, '<kinko:foo>', 'exec'), {})
        self.compareSources(
            dumps(foo_module),
            """
            def func1(ctx):
                ctx.buffer.write('<div>')
                func2(ctx)
                ctx.buffer.write('</div>')

            def func2(ctx):
                ctx.buffer.write('<div>')
                ctx.lookup('bar/func3')(ctx)
                ctx.buffer.write('</div>')
            """,
        )
        bar_module = compile_module(bar_node)
        _exec_in(compile(bar_module, '<kinko:bar>', 'exec'), {})
        self.compareSources(
            dumps(bar_module),
            """
            def func3(ctx):
                ctx.buffer.write('<div>Text</div>')
            """,
        )
Пример #3
0
    def assertRenders(self, src, content, context=None, env=None):
        node = parse(src)
        node = check(node, Environ(env))
        mod = compile_module(node)
        mod_code = compile(mod, '<kinko-template>', 'exec')

        ctx = SimpleContext(context or {})
        ctx.buffer.push()
        ns = {}
        _exec_in(mod_code, ns)
        ns['foo'](ctx)
        rendered = ctx.buffer.pop()

        self.assertEqual(rendered, content)
Пример #4
0
    def assertRenders(self, src, content, context=None, env=None):
        node = parse(src)
        node = check(node, Environ(env))
        mod = compile_module(node)
        mod_code = compile(mod, '<kinko-template>', 'exec')

        ctx = SimpleContext(context or {})
        ctx.buffer.push()
        ns = {}
        _exec_in(mod_code, ns)
        ns['foo'](ctx)
        rendered = ctx.buffer.pop()

        self.assertEqual(rendered, content)