[IMP] faster implementation for Root.find_handler.

bzr revid: florent.xicluna@gmail.com-20120201143032-pshpu4uhvl61nr9z
This commit is contained in:
Florent Xicluna
2012-02-01 15:30:32 +01:00
parent 8abe9402e2
commit 228c817c33
+7 -7
View File
@@ -541,17 +541,17 @@ class Root(object):
:returns: a callable matching the path sections, or ``None``
:rtype: ``Controller | None``
"""
if len(l):
for i in range(len(l), 0, -1):
ps = "/" + "/".join(l[0:i])
if ps in controllers_path:
c = controllers_path[ps]
rest = l[i:] or ['index']
meth = rest[0]
if l:
ps = '/' + '/'.join(l)
meth = 'index'
while ps:
c = controllers_path.get(ps)
if c:
m = getattr(c, meth)
if getattr(m, 'exposed', False):
_logger.debug("Dispatching to %s %s %s", ps, c, meth)
return m
ps, _slash, meth = ps.rpartition('/')
return None
class LibException(Exception):