diff options
| author | Jason <jason@deadtreepages.com> | 2013-03-27 16:26:07 -0400 |
|---|---|---|
| committer | Jason <jason@deadtreepages.com> | 2013-03-27 16:26:07 -0400 |
| commit | 90b361a4674dba5361690c5c46a83016af71975a (patch) | |
| tree | e307c10395c78a10e114209ab1c9fd819e9d24ca | |
| parent | 976b6756aaf3f39550c59447ac9ed1df6fa1e470 (diff) | |
| download | pyramid-90b361a4674dba5361690c5c46a83016af71975a.tar.gz pyramid-90b361a4674dba5361690c5c46a83016af71975a.tar.bz2 pyramid-90b361a4674dba5361690c5c46a83016af71975a.zip | |
Spaces and dots may now be in mako renderer template paths. Fixes #950.
| -rw-r--r-- | pyramid/mako_templating.py | 14 | ||||
| -rw-r--r-- | pyramid/tests/fixtures/hello .world.mako | 3 | ||||
| -rw-r--r-- | pyramid/tests/test_mako_templating.py | 28 |
3 files changed, 36 insertions, 9 deletions
diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py index f2627c1fc..061bcb717 100644 --- a/pyramid/mako_templating.py +++ b/pyramid/mako_templating.py @@ -82,7 +82,6 @@ class PkgResourceTemplateLookup(TemplateLookup): "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 @@ class MakoRendererFactoryHelper(object): 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 diff --git a/pyramid/tests/fixtures/hello .world.mako b/pyramid/tests/fixtures/hello .world.mako new file mode 100644 index 000000000..7a06eed97 --- /dev/null +++ b/pyramid/tests/fixtures/hello .world.mako @@ -0,0 +1,3 @@ +## -*- coding: utf-8 -*- +<%!from pyramid.compat import text_%><% a, b = 'foo', text_('föö', 'utf-8') %> +Hello ${text_('föö', 'utf-8')}
\ No newline at end of file diff --git a/pyramid/tests/test_mako_templating.py b/pyramid/tests/test_mako_templating.py index 37264aa48..50ef360d9 100644 --- a/pyramid/tests/test_mako_templating.py +++ b/pyramid/tests/test_mako_templating.py @@ -270,6 +270,34 @@ class Test_renderer_factory(Base, unittest.TestCase): 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 |
