Path Matching
=============
Relative v. Absolute Paths
--------------------------
Paths that start with `/` are absolute, paths that don't are relative,
meaning they extend their parent's path.
```xml
```
Absolute paths allow you to use any URL you want while maintaining the
automatic view nesting of the router.
Dynamic Segments
----------------
Dynamic segements are defined with a `:`, like `:userId`. They will be
parsed and available by name in your route handler on
`this.props.params`. They match most characters except `. / ? #`.
Splats
------
Splats are defined with `*` and will non-greedily match anything. The
value will be available in your route handler as
`this.props.params.splat`. If there are multiple, you'll get an array of
values.
Question Mark
-------------
Question marks will optionally match the preceeding segment.
Examples
--------
```
path: /file/:name.?:ext?
matches:
/file/foo.js
this.props.params: {name: 'foo', ext: 'js'}
/file/foo
this.props.params: {name: 'foo'}
does not match:
/file/foo.bar.js
/file/quux/baz.js
path: /file/*
matches:
/file/foo.bar.js
this.props.params: {splat: 'foo.bar.js'}
/file/quux/baz.js
this.props.params: {splat: 'quux/baz.js'}
path: /foo/*/:bar/?*?
matches:
/foo/a.b.c/taco/def
this.props.params: {bar: 'taco', splat: ['a.b.c', 'def']}
/foo/a.b.c/taco
this.props.params: {bar: 'taco', splat: 'a.b.c'}
does not match:
/foo/a.b.c
path: *
matches everything, but you probably want ``
```