From 90b361a4674dba5361690c5c46a83016af71975a Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 27 Mar 2013 16:26:07 -0400 Subject: Spaces and dots may now be in mako renderer template paths. Fixes #950. --- pyramid/mako_templating.py | 14 +++++--------- pyramid/tests/fixtures/hello .world.mako | 3 +++ pyramid/tests/test_mako_templating.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 pyramid/tests/fixtures/hello .world.mako 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[\w_.:/-]+)' - r'(?:\#(?P[\w_]+))?' - r'(\.(?P.*))' - ) - 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 -- cgit v1.2.3 From 961ff441cfdf3c4c963619e0f5476121c8880840 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 28 Mar 2013 09:05:13 -0400 Subject: Added name to CONTRIBUTORS file. --- CONTRIBUTORS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 94eee9443..97eb54f7b 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -196,3 +196,5 @@ Contributors - Bert JW Regeer, 2013/02/01 - Georges Dubus, 2013/03/21 + +- Jason McKellar, 2013/03/28 -- cgit v1.2.3