Package translate :: Package misc :: Module selector :: Class SimpleParser

[hide private]
[frames] | no frames]

# 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.)

Instance Methods | [hide private]

__init__(self, patterns=None) Initialize with character class mappings. | source code

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

openended(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__`

Class Variables | [hide private]

| _patterns = ``{``'``alpha``'``:` `'``[a-zA-Z]+``'``,` `'``any``'``:` `'``.+``'``,` `'``chunk``'``:` `'``[^/^``...``
| default_pattern = ``'``chunk``'``
| end = ``'``}``'``
| oend = ``'``]``'``
| ostart = ``'``[``'``
| start = ``'``{``'``

Properties | [hide private]

Inherited from `object`: `__class__`

Method Details | [hide private]

### __init__(self, patterns=None)
(Constructor)

source code

Initialize with character class mappings.

Overrides: object.__init__

### lastly(self, regex)

source code

Process the result of __call__ right before it returns.

Adds the ^ and the $ to the beginning and the end, respectively.

### openended(self, regex)

source code

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.

Class Variable Details | [hide private]

### _patterns

Value:

      {'alpha': '[a-zA-Z]+',
       'any': '.+',
       'chunk': '[^/^.]+',
       'digits': '\\d+',
       'number': '\\d*.?\\d+',
       'segment': '[^/]+',
       'word': '\\w+'}