From 523132fe530f3ed19316c569351b6d0e3539c5e0 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 30 Jul 2010 01:19:46 +0000 Subject: cm --- docs/narr/urldispatch.rst | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'docs/narr') diff --git a/docs/narr/urldispatch.rst b/docs/narr/urldispatch.rst index 59bcde13f..3c7555636 100644 --- a/docs/narr/urldispatch.rst +++ b/docs/narr/urldispatch.rst @@ -258,6 +258,24 @@ It will not match the following patterns however: foo/1/2/ -> No match (trailing slash) bar/abc/def -> First segment literal mismatch +The match for a segment replacement marker in a segment will be done +only up to the first non-alphanumeric character in the segment in the +pattern. So, for instance, if this route pattern was used: + +.. code-block:: text + + foo/:name.html + +The literal path ``/foo/biz.html`` will match the above route pattern, +and the match result will be ``{'name':u'biz'}``. However, the +literal path ``/foo/biz`` will not match, because it does not contain +a literal ``.html`` at the end of the segment represented by +``:name.html`` (it only contains ``biz``, not ``biz.html``). + +This does not mean, however, that you can use two segment replacement +markers in the same segment. For instance, ``/:foo:bar`` is a +nonsensical route pattern. It will never match anything. + Note that values representing path segments matched with a ``:segment`` match will be url-unquoted and decoded from UTF-8 into Unicode within the matchdict. So for instance, the following @@ -294,8 +312,8 @@ matchdicts: .. code-block:: text - foo/1/2/ -> {'baz':1, 'bar':2, 'fizzle':()} - foo/abc/def/a/b/c -> {'baz':abc, 'bar':def, 'fizzle':('a', 'b', 'c')} + foo/1/2/ -> {'baz':'1', 'bar':'2', 'fizzle':()} + foo/abc/def/a/b/c -> {'baz':'abc', 'bar':'def', 'fizzle':('a', 'b', 'c')} Note that when a ``*stararg`` remainder match is matched, the value put into the matchdict is turned into a tuple of path segments -- cgit v1.2.3