Source code for wheezy.routing.plain

""" ``plain`` module.
"""

import re


RE_PLAIN_ROUTE = re.compile(r'^[\w\./-]+$')


def try_build_plain_route(pattern, finishing=True, kwargs=None, name=None):
[docs] """ If the plain route regular expression match the pattern than create a PlainRoute instance. """ if isinstance(pattern, PlainRoute): return pattern if pattern == '' or RE_PLAIN_ROUTE.match(pattern): return PlainRoute(pattern, finishing, kwargs, name) return None class PlainRoute(object):
[docs] """ Route based on string equalty operation. """ __slots__ = ('pattern', 'kwargs', 'matched', 'match', 'exact_matches') def __init__(self, pattern, finishing, kwargs=None, name=None): """ Initializes the route by given ``pattern``. If ``finishing`` is True than choose ``equals_math`` strategy """ kwargs = kwargs and kwargs.copy() or {} self.pattern = pattern self.matched = len(pattern) # Choose match strategy if finishing: if name: kwargs['route_name'] = name self.match = self.equals_match else: self.match = self.startswith_match self.exact_matches = ((pattern, kwargs), ) self.kwargs = kwargs def equals_match(self, path):
[docs] """ If the ``path`` exactly equals pattern string, return end index of substring matched and a copy of ``self.kwargs``. """ return path == self.pattern and \ (self.matched, self.kwargs) or (-1, None) def startswith_match(self, path):
[docs] """ If the ``path`` starts with pattern string, return the end of substring matched and ``self.kwargs``. """ return path.startswith(self.pattern) and \ (self.matched, self.kwargs) or (-1, None) def path(self, values=None):
[docs] """ Build the path for given route by simply returning the pattern used during initialization. """ return self.pattern