Jason
2013-03-27 4e537f320d4f1e5d9014ff476fe9358b2d59a1c6
Spaces and dots may now be in mako renderer template paths. Fixes #950.
1 files added
2 files modified
45 ■■■■ changed files
pyramid/mako_templating.py 14 ●●●●● patch | view | raw | blame | history
pyramid/tests/fixtures/hello .world.mako 3 ●●●●● patch | view | raw | blame | history
pyramid/tests/test_mako_templating.py 28 ●●●●● patch | view | raw | blame | history
pyramid/mako_templating.py
@@ -82,7 +82,6 @@
                    "Can not locate template for uri %r" % uri)
        return TemplateLookup.get_template(self, uri)
registry_lock = threading.Lock()
class MakoRendererFactoryHelper(object):
@@ -90,14 +89,11 @@
        self.settings_prefix = settings_prefix
    def __call__(self, info):
        p = re.compile(
                r'(?P<asset>[\w_.:/-]+)'
                r'(?:\#(?P<defname>[\w_]+))?'
                r'(\.(?P<ext>.*))'
                )
        asset, defname, ext = p.match(info.name).group(
            'asset', 'defname', 'ext'
            )
        defname = None
        asset, ext = info.name.rsplit('.', 1)
        if '#' in asset:
            asset, defname = asset.rsplit('#', 1)
        path = '%s.%s' % (asset, ext)
        registry = info.registry
        settings = info.settings
pyramid/tests/fixtures/hello .world.mako
New file
@@ -0,0 +1,3 @@
## -*- coding: utf-8 -*-
<%!from pyramid.compat import text_%><% a, b = 'foo', text_('föö', 'utf-8') %>
Hello ${text_('föö', 'utf-8')}
pyramid/tests/test_mako_templating.py
@@ -270,6 +270,34 @@
        self.assertEqual(renderer.lookup, lookup)
        self.assertEqual(renderer.path, 'helloworld.mak')
    def test_space_dot_name(self):
        from pyramid.mako_templating import renderer_factory
        info = DummyRendererInfo({
            'name':'hello .world.mako',
            'package':None,
            'registry':self.config.registry,
            'settings':{},
        })
        result = renderer_factory(info)
        self.assertEqual(result.path, 'hello .world.mako')
        self.assertTrue(result.defname is None)
    def test_space_dot_name_def(self):
        from pyramid.mako_templating import renderer_factory
        info = DummyRendererInfo({
            'name':'hello .world#comp.mako',
            'package':None,
            'registry':self.config.registry,
            'settings':{},
            })
        result = renderer_factory(info)
        self.assertEqual(result.path, 'hello .world.mako')
        self.assertEqual(result.defname, 'comp')
class MakoRendererFactoryHelperTests(Base, unittest.TestCase):
    def _getTargetClass(self):
        from pyramid.mako_templating import MakoRendererFactoryHelper