reroute-0.1.0.0: abstract implementation of typed and untyped web routing

Safe HaskellNone

Web.Routing.AbstractRouter

Documentation

class AbstractRouter r whereSource

Associated Types

data Registry r :: *Source

data RoutePath r :: [*] -> *Source

type RouteAction r :: [*] -> *Source

type RouteAppliedAction r Source

type ParamMap = HashMap CaptureVar TextSource

newtype CaptureVar Source

Constructors

CaptureVar 

Fields

unCaptureVar :: Text
 

Instances

newtype RegistryT r middleware reqTypes m a Source

Constructors

RegistryT 

Fields

runRegistryT :: RWST (RoutePath r `[]`) [middleware] (RegistryState r reqTypes) m a
 

Instances

Monad m => MonadWriter [middleware] (RegistryT r middleware reqTypes m) 
Monad m => MonadState (RegistryState r reqTypes) (RegistryT r middleware reqTypes m) 
Monad m => MonadReader (RoutePath r ([] *)) (RegistryT r middleware reqTypes m) 
MonadTrans (RegistryT r middleware reqTypes) 
Monad m => Monad (RegistryT r middleware reqTypes m) 
Functor m => Functor (RegistryT r middleware reqTypes m) 
(Monad m, Functor m) => Applicative (RegistryT r middleware reqTypes m) 
MonadIO m => MonadIO (RegistryT r middleware reqTypes m) 

data RegistryState r reqTypes Source

Constructors

RegistryState 

Fields

rs_registry :: HashMap reqTypes (Registry r)
 

Instances

Monad m => MonadState (RegistryState r reqTypes) (RegistryT r middleware reqTypes m) 

hookRoute :: (Monad m, AbstractRouter r, Eq reqTypes, Hashable reqTypes) => reqTypes -> RoutePath r as -> RouteAction r as -> RegistryT r middleware reqTypes m ()Source

middleware :: Monad m => middleware -> RegistryT r middleware reqTypes m ()Source

subcomponent :: (Monad m, AbstractRouter r) => RoutePath r `[]` -> RegistryT r middleware reqTypes m a -> RegistryT r middleware reqTypes m aSource

runRegistry :: (Monad m, AbstractRouter r, Hashable reqTypes, Eq reqTypes) => r -> RegistryT r middleware reqTypes m a -> m (a, reqTypes -> [Text] -> [(ParamMap, RouteAppliedAction r)], [middleware])Source