예제 #1
0
 def setUp(self):
     from wheezy.template.engine import Engine
     from wheezy.template.ext.core import CoreExtension
     from wheezy.template.loader import DictLoader
     self.engine = Engine(loader=DictLoader({}),
                          extensions=[CoreExtension()])
예제 #2
0
파일: bigtable.py 프로젝트: mgd020/pyrender
try:
    from wheezy.template.engine import Engine
    from wheezy.template.loader import DictLoader
    from wheezy.template.ext.core import CoreExtension
except ImportError:
    test_wheezy_template = None
else:
    engine = Engine(loader=DictLoader({
        'x':
        s("""\
@require(table)
<table>
    @for row in table:
    <tr>
        @for key, value in row.items():
        <td>@key!h</td><td>@value!s</td>
        @end
    </tr>
    @end
</table>
""")
    }),
                    extensions=[CoreExtension()])
    engine.global_vars.update({'h': escape})
    wheezy_template = engine.get_template('x')

    def test_wheezy_template():
        return wheezy_template.render(ctx)

예제 #3
0
 def tohtml(self):
     path = os.path.join(os.path.dirname(__file__), 'reader.html.template')
     loader = DictLoader({'reader': open(path).read()})
     engine = Engine(loader=loader, extensions=[CoreExtension()])
     template = engine.get_template('reader')
     return template.render({'feed': self}).encode('utf-8')
예제 #4
0

class Engine(BaseEngine):
    def render(self, name, ctx, local_defs, super_defs):
        super_defs['__super__'] = s = {}
        return super(Engine, self).render(name, ctx, local_defs, s)


def super_token(m):
    i = m.end(1) - m.start(1)
    end, name, value = var_token(m)
    s = 'super_defs["__super__"]["' + value[:i] + '"]' + value[i:]
    return end, 'var', s


core = CoreExtension()
core.lexer_rules[150] = (re.compile(r'@super\.(\w+)'), super_token)

engine = Engine(loader=DictLoader(pages), extensions=[core])


class TestCase(unittest.TestCase):
    def test_render(self):
        template = engine.get_template('page_b')
        r = template.render({})
        assert ['b', 'a', 'super'] == r.split()


if __name__ == '__main__':
    unittest.main()
예제 #5
0
class EscapeExtension(object):
    builder_rules = [("var", build_var)]


# setup
template = """
@require(var)
@def x(s):
  <meta name="@s" />
@end
@var @var!e @var!s @x(var)!safe
"""

engine = Engine(
    loader=DictLoader({"template": template}),
    extensions=[EscapeExtension(), CoreExtension()],
)
engine.global_vars.update({"e": escape})


# test
class TestCase(unittest.TestCase):
    def test_render(self) -> None:
        template = engine.get_template("template")
        r = template.render({"var": "<X>"})
        self.assertEqual('&lt;X&gt; &lt;X&gt; <X>   <meta name="&lt;X&gt;" />',
                         r.strip())
        r = template.render({"var": "X"})
        self.assertEqual('X X X   <meta name="X" />', r.strip())
예제 #6
0
</form>
<script>
window.onload=function()
{
    c = document.getElementById('captcha');
    c.onclick = function() {
        this.src=this.src.replace(/&r=\d+/g,'') + '&r=' + \
            Math.floor(Math.random() * 100 + 1);
    };
}
</script>
</body></html>"""
}

engine = Engine(
    loader=DictLoader(templates),
    extensions=[CoreExtension(),
                WidgetExtension(),
                WhitespaceExtension()])

all_urls = [('', WelcomeHandler),
            url('captcha.jpg', captcha_handler, name='captcha')]

options = {'http_cache': cache, 'render_template': WheezyTemplate(engine)}
main = WSGIApplication([
    bootstrap_defaults(url_mapping=all_urls), http_cache_middleware_factory,
    path_routing_middleware_factory
], options)

if __name__ == '__main__':
    from wsgiref.handlers import BaseHandler
예제 #7
0
import unittest

from wheezy.template.engine import Engine
from wheezy.template.ext.core import CoreExtension
from wheezy.template.loader import DictLoader

page_a = 'a'
page_b = 'b'

page_c = """
@require(name)
@include('page_' + name)
"""

pages = {'page_a': page_a, 'page_b': page_b, 'page_c': page_c}

engine = Engine(loader=DictLoader(pages), extensions=[CoreExtension()])


class TestCase(unittest.TestCase):
    def test_render(self):
        template = engine.get_template('page_c')
        r = template.render({'name': 'a'})
        self.assertEqual('a', r.strip())
        r = template.render({'name': 'b'})
        self.assertEqual('b', r.strip())


if __name__ == '__main__':
    unittest.main()
예제 #8
0
 def setUp(self) -> None:
     self.templates: typing.Dict[str, str] = {}
     self.engine = Engine(
         loader=DictLoader(templates=self.templates),
         extensions=[CoreExtension()],
     )
예제 #9
0
 def setUp(self):
     from wheezy.template.engine import Engine
     from wheezy.template.loader import DictLoader
     self.engine = Engine(
         loader=DictLoader(templates={}),
         extensions=[])
예제 #10
0
 def setUp(self) -> None:
     self.engine = Engine(loader=DictLoader({}),
                          extensions=[CoreExtension()])
예제 #11
0
def compile_template(template_dict, template_name):
    """Compile template."""
    engine = Engine(loader=DictLoader(template_dict), extensions=[CoreExtension()])
    compiled = engine.get_template(template_name)
    return compiled
예제 #12
0
 def setUp(self):
     from wheezy.template.loader import DictLoader
     self.loader = DictLoader(templates={
         'tmpl1.html': 'x',
         'shared/master.html': 'x'
     })
예제 #13
0
 def setUp(self) -> None:
     self.loader = DictLoader(templates={
         "tmpl1.html": "x",
         "shared/master.html": "x"
     })
예제 #14
0
    "page_b": page_b,
    "page_all": page_all,
}


def build_include(builder: Builder, lineno: int, token: str,
                  value: str) -> bool:
    assert token == "include"
    builder.add(lineno, "w(_r(" + value + ", ctx, {}, {}))")
    return True


class MyExtention(object):

    builder_rules = [("include", build_include)]


engine = Engine(loader=DictLoader(pages),
                extensions=[MyExtention(), CoreExtension()])


class TestCase(unittest.TestCase):
    def test_render(self) -> None:
        template = engine.get_template("page_all")
        r = template.render({})
        self.assertEqual(["a", "b"], r.split())


if __name__ == "__main__":
    unittest.main()