::: cowboy1_router

The `cowboy1_router` middleware maps the requested host and
path to the handler to be used for processing the request.
It uses the dispatch rules compiled from the routes given
to the `compile/1` function for this purpose. It adds the
handler name and options to the environment as the values
`handler` and `handler_opts` respectively.

Environment input:

* dispatch = dispatch_rules()

Environment output:

* handler = module()
* handler_opts = any()

:: Types

: bindings() = [{atom(), binary()}]

List of bindings found during routing.

: constraints() = [IntConstraint | FunConstraint]

Types:

* IntConstraint = {atom(), int}
* FunConstraint = {atom(), function, Fun}
* Fun = fun((binary()) -> true | {true, any()} | false)

List of constraints to apply to the bindings.

The int constraint will convert the binding to an integer.
The fun constraint allows writing custom code for checking
the bindings. Returning a new value from that fun allows
replacing the current binding with a new value.

: dispatch_rules() - opaque to the user

Rules for dispatching request used by Cowboy.

: routes() = [{Host, Paths} | {Host, constraints(), Paths}]

Types:

* Host = Path = '_' | iodata()
* Paths = [{Path, Handler, Opts} | {Path, constraints(), Handler, Opts}]
* Handler = module()
* Opts = any()

Human readable list of routes mapping hosts and paths to handlers.

The syntax for routes is defined in the user guide.

: tokens() = [binary()]

List of host_info and path_info tokens found during routing.

:: Exports

: compile(Routes) -> Dispatch

Types:

* Routes = routes()
* Dispatch = dispatch_rules()

Compile the routes for use by Cowboy.
