Class SimpleParser
source code
Callable to turn path expressions into regexes with named groups.
For instance "/hello/{name}" becomes
r"^\/hello\/(?P<name>[^\^.]+)$"
For /hello/{name:pattern} you get whatever is in
self.patterns['pattern'] instead of "[^\^.]+"
Optional portions of path expression can be expressed [like this]
/hello/{name}[/] (can have trailing slash or not)
Example:
/blog/archive/{year:digits}/{month:digits}[/[{article}[/]]]
This would catch any of these:
/blog/archive/2005/09 /blog/archive/2005/09/ /blog/archive/2005/09/1
/blog/archive/2005/09/1/
(I am not suggesting that this example is a best practice. I would
probably have a separate mapping for listing the month and retrieving an
individual entry. It depends, though.)
|
|
|
|
|
lookup(self,
name)
Return the replacement for the name found. |
source code
|
|
|
|
lastly(self,
regex)
Process the result of __call__ right before it returns. |
source code
|
|
|
|
|
|
|
outermost_optionals_split(self,
text)
Split out optional portions by outermost matching delims. |
source code
|
|
|
|
parse(self,
text)
Turn a path expression into regex. |
source code
|
|
|
|
__call__(self,
url_pattern)
Turn a path expression into regex via parse and lastly. |
source code
|
|
|
Inherited from object:
__delattr__,
__format__,
__getattribute__,
__hash__,
__new__,
__reduce__,
__reduce_ex__,
__repr__,
__setattr__,
__sizeof__,
__str__,
__subclasshook__
|
|
|
_patterns = {'alpha': '[a-zA-Z]+', 'any': '.+', 'chunk': '[^/^...
|
|
|
default_pattern = 'chunk'
|
|
|
end = '}'
|
|
|
oend = ']'
|
|
|
ostart = '['
|
|
|
start = '{'
|
|
Inherited from object:
__class__
|
__init__(self,
patterns=None)
(Constructor)
| source code
|
Initialize with character class mappings.
- Overrides:
object.__init__
|
|
Process the result of __call__ right before it returns.
Adds the ^ and the $ to the beginning and the end, respectively.
|
|
Process the result of __call__ right before it returns.
Adds the ^ to the beginning but no $ to the end. Called as a special
alternative to lastly.
|
_patterns
- Value:
{'alpha': '[a-zA-Z]+',
'any': '.+',
'chunk': '[^/^.]+',
'digits': '\\d+',
'number': '\\d*.?\\d+',
'segment': '[^/]+',
'word': '\\w+'}
|
|