diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-20 23:22:04 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-20 23:22:04 +0000 |
| commit | f646fe5800d1129ae79944956e125f51611350b1 (patch) | |
| tree | b63cf329af753df3d5690582e5a10e0d54bac383 | |
| parent | 9912472024d544728459f3a9ea32dc42fee63255 (diff) | |
| download | pyramid-f646fe5800d1129ae79944956e125f51611350b1.tar.gz pyramid-f646fe5800d1129ae79944956e125f51611350b1.tar.bz2 pyramid-f646fe5800d1129ae79944956e125f51611350b1.zip | |
Minor speed tweaks.
| -rw-r--r-- | repoze/bfg/tests/test_urldispatch.py | 20 | ||||
| -rw-r--r-- | repoze/bfg/urldispatch.py | 13 |
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: |
