summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-20 23:22:04 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-20 23:22:04 +0000
commitf646fe5800d1129ae79944956e125f51611350b1 (patch)
treeb63cf329af753df3d5690582e5a10e0d54bac383
parent9912472024d544728459f3a9ea32dc42fee63255 (diff)
downloadpyramid-f646fe5800d1129ae79944956e125f51611350b1.tar.gz
pyramid-f646fe5800d1129ae79944956e125f51611350b1.tar.bz2
pyramid-f646fe5800d1129ae79944956e125f51611350b1.zip
Minor speed tweaks.
-rw-r--r--repoze/bfg/tests/test_urldispatch.py20
-rw-r--r--repoze/bfg/urldispatch.py13
2 files changed, 13 insertions, 20 deletions
diff --git a/repoze/bfg/tests/test_urldispatch.py b/repoze/bfg/tests/test_urldispatch.py
index faa375dbd..278df8064 100644
--- a/repoze/bfg/tests/test_urldispatch.py
+++ b/repoze/bfg/tests/test_urldispatch.py
@@ -10,34 +10,30 @@ class TestRoute(unittest.TestCase):
return self._getTargetClass()(*arg)
def test_ctor(self):
+ import types
route = self._makeOne(':path', 'name', 'factory')
self.assertEqual(route.path, ':path')
self.assertEqual(route.name, 'name')
self.assertEqual(route.factory, 'factory')
- self.failUnless(route.generator)
- self.failUnless(route.matcher)
+ self.failUnless(route.generate.__class__ is types.FunctionType)
+ self.failUnless(route.match.__class__ is types.FunctionType)
def test_ctor_defaults(self):
+ import types
route = self._makeOne(':path')
self.assertEqual(route.path, ':path')
self.assertEqual(route.name, None)
self.assertEqual(route.factory, None)
- self.failUnless(route.generator)
- self.failUnless(route.matcher)
+ self.failUnless(route.generate.__class__ is types.FunctionType)
+ self.failUnless(route.match.__class__ is types.FunctionType)
def test_match(self):
- def matcher(path):
- return 123
route = self._makeOne(':path')
- route.matcher = matcher
- self.assertEqual(route.match('whatever'), 123)
+ self.assertEqual(route.match('/whatever'), {'path':'whatever'})
def test_generate(self):
- def generator(path):
- return 123
route = self._makeOne(':path')
- route.generator = generator
- self.assertEqual(route.generate({}), 123)
+ self.assertEqual(route.generate({'path':'abc'}), '/abc')
class RoutesRootFactoryTests(unittest.TestCase):
def setUp(self):
diff --git a/repoze/bfg/urldispatch.py b/repoze/bfg/urldispatch.py
index 7aba027e9..c1d1f71e4 100644
--- a/repoze/bfg/urldispatch.py
+++ b/repoze/bfg/urldispatch.py
@@ -10,16 +10,10 @@ _marker = object()
class Route(object):
def __init__(self, path, name=None, factory=None):
self.path = path
- self.matcher, self.generator = _compile_route(path)
+ self.match, self.generate = _compile_route(path)
self.name = name
self.factory = factory
- def match(self, path):
- return self.matcher(path)
-
- def generate(self, kw):
- return self.generator(kw)
-
class RoutesRootFactory(object):
def __init__(self, default_root_factory):
self.default_root_factory = default_root_factory
@@ -42,7 +36,10 @@ class RoutesRootFactory(object):
return self.routes[name].generate(kw)
def __call__(self, environ):
- path = environ.get('PATH_INFO', '/')
+ try:
+ path = environ['PATH_INFO']
+ except KeyError:
+ path = '/'
for route in self.routelist:
match = route.match(path)
if match is not None: