nested-routes-8.0.1: Declarative, compositional Wai responses

Copyright(c) 2015 Athan Clark
LicenseBSD-style
Maintainerathan.clark@gmail.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Web.Routes.Nested.Types

Contents

Description

 

Synopsis

Internal Structure

data Tries x s Source #

The internal data structure built during route declaration.

Instances

Monoid (Tries x s) Source # 

Methods

mempty :: Tries x s #

mappend :: Tries x s -> Tries x s -> Tries x s #

mconcat :: [Tries x s] -> Tries x s #

Monad m => MonadState (Tries x sec) (RouterT x sec m) Source # 

Methods

get :: RouterT x sec m (Tries x sec) #

put :: Tries x sec -> RouterT x sec m () #

state :: (Tries x sec -> (a, Tries x sec)) -> RouterT x sec m a #

Builder

newtype RouterT x sec m a Source #

The (syntactic) monad for building a router with functions like "Web.Routes.Nested.match". it should have a shape of RouterT (MiddlewareT m) (SecurityToken s) m a when used with "Web.Routes.Nested.route".

Constructors

RouterT 

Fields

Instances

MonadTrans (RouterT x sec) Source # 

Methods

lift :: Monad m => m a -> RouterT x sec m a #

Monad m => MonadState (Tries x sec) (RouterT x sec m) Source # 

Methods

get :: RouterT x sec m (Tries x sec) #

put :: Tries x sec -> RouterT x sec m () #

state :: (Tries x sec -> (a, Tries x sec)) -> RouterT x sec m a #

Monad m => Monad (RouterT x sec m) Source # 

Methods

(>>=) :: RouterT x sec m a -> (a -> RouterT x sec m b) -> RouterT x sec m b #

(>>) :: RouterT x sec m a -> RouterT x sec m b -> RouterT x sec m b #

return :: a -> RouterT x sec m a #

fail :: String -> RouterT x sec m a #

Functor m => Functor (RouterT x sec m) Source # 

Methods

fmap :: (a -> b) -> RouterT x sec m a -> RouterT x sec m b #

(<$) :: a -> RouterT x sec m b -> RouterT x sec m a #

Monad m => Applicative (RouterT x sec m) Source # 

Methods

pure :: a -> RouterT x sec m a #

(<*>) :: RouterT x sec m (a -> b) -> RouterT x sec m a -> RouterT x sec m b #

(*>) :: RouterT x sec m a -> RouterT x sec m b -> RouterT x sec m b #

(<*) :: RouterT x sec m a -> RouterT x sec m b -> RouterT x sec m a #

MonadIO m => MonadIO (RouterT x sec m) Source # 

Methods

liftIO :: IO a -> RouterT x sec m a #

execRouterT :: Monad m => RouterT x sec m a -> m (Tries x sec) Source #

Run the monad, only getting the built state and throwing away a.

type ActionT m a = VerbListenerT (FileExtListenerT m a) m a Source #

The type of "content" builders; using the wai-middleware-verbs and wai-middleware-content-type packages.

action :: Monad m => MonadBaseControl IO m stM => Extractable stM => ActionT m () -> MiddlewareT m Source #

Run the content builder into a middleware that responds when the content is satisfiable (i.e. Accept headers are O.K., etc.)

Book Keeping

type ExtrudeSoundly xs' xs c r = (xs' ~ CatMaybes xs, ArityTypeListIso c xs' r, Extrude (UrlChunks xs) (RootedPredTrie Text c) (RootedPredTrie Text r)) Source #

Soundness constraint showing that a function's arity can be represented as a type-level list.