wai-routes-0.2.3: Typesafe URLs for Wai applications.

Portabilitynon-portable (uses ghc extensions)
Stabilityexperimental
Maintainerajnsit@gmail.com
Safe HaskellNone

Network.Wai.Middleware.Routes.Routes

Contents

Description

This package provides typesafe URLs for Wai applications.

Synopsis

Quasi Quoters

parseRoutes :: QuasiQuoter

A quasi-quoter to parse a string into a list of Resources. Checks for overlapping routes, failing if present; use parseRoutesNoCheck to skip the checking. See documentation site for details on syntax.

Parse Routes declared inline

Parse routes declared in a file

parseRoutesNoCheck :: QuasiQuoter

Same as parseRoutes, but performs no overlap checking.

Parse routes declared inline, without checking for overlaps

Parse routes declared in a file, without checking for overlaps

Template Haskell methods

mkRoute :: String -> [ResourceTree String] -> Q [Dec]Source

Generates all the things needed for efficient routing, including your application's Route datatype, and a RenderRoute instance

Dispatch

routeDispatch :: Routable master => master -> MiddlewareSource

Generates the application middleware from a Routable master datatype

URL rendering

showRoute :: RenderRoute master => Route master -> TextSource

Renders a Route as Text Uses the encodePath function from http-types. Also performs utf8 encoding

Application Handlers

type Handler master = master -> ApplicationSource

A Handler generates an Application from the master datatype

Generated Datatypes

class Routable master whereSource

A Routable instance can be used in dispatching. An appropriate instance for your site datatype is automatically generated by mkRoute

Methods

dispatcher :: master -> master -> (Route master -> Route master) -> Handler master -> (Route master -> Handler master) -> Text -> [Text] -> Handler masterSource

class Eq (Route a) => RenderRoute a where

Associated Types

data Route a1

The type-safe URLs associated with a site argument.

Methods

renderRoute :: Route a -> ([Text], [(Text, Text)])

A RenderRoute instance for your site datatype is automatically generated by mkRoute