urlpath-4.2.0: Painfully simple URL deployment.

Copyright(c) Athan L. Clark
LicenseMIT
MaintainerAthan L. Clark <athan.clark@gmail.com>
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Data.Url

Contents

Description

This library helps us distinguish how we present URLs - we might show them relatively, absolutely (with the URI authority - scheme, port, hostname, etc.), or grounded - where the path begins with /.

We leverage Chris Done's path library to distinguish relative vs. grounded paths at compile time, and provide some additional features like a file extension and query parameters in path-extra.

Synopsis

Classes

class MonadUrl base type' m where Source

Turns a Path or Location into a String, where the rendering behavior (relative, grounded and absolute) is encoded in the monad you use, much like LoggingT and NoLoggingT from monad-logger.

Methods

pathUrl :: Path base type' -> m String Source

locUrl :: Location base type' -> m String Source

Instances

MonadUrl b t IO Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (NoLoggingT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (LoggingT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (IdentityT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (ResourceT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (ListT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (MaybeT m) Source 
Applicative m => MonadUrl Rel File (RelativeUrlT m) Source 
Applicative m => MonadUrl Rel Dir (RelativeUrlT m) Source 
Applicative m => MonadUrl Abs File (AbsoluteUrlT m) Source 
Applicative m => MonadUrl Abs File (GroundedUrlT m) Source 
Applicative m => MonadUrl Abs Dir (AbsoluteUrlT m) Source 
Applicative m => MonadUrl Abs Dir (GroundedUrlT m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (ExceptT e m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (ContT r m) Source 
(MonadUrl b t m, Monad m, Error e) => MonadUrl b t (ErrorT e m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (StateT s m) Source 
(MonadUrl b t m, Monad m, Monoid w) => MonadUrl b t (WriterT w m) Source 
(MonadUrl b t m, Monad m) => MonadUrl b t (ReaderT r m) Source 
(MonadUrl b t m, Monad m, Monoid w) => MonadUrl b t (RWST r w s m) Source 

class ToLocation sym base type' | sym -> base type' where Source

Convenience typeclass for symbolic, stringless routes - make an instance for your own data type to use your constructors as route-referencing symbols.

Methods

toLocation :: MonadThrow m => sym -> m (Location base type') Source

Types

Relative Urls

newtype RelativeUrlT m a Source

Constructors

RelativeUrlT 

Fields

runRelativeUrlT :: m a
 

Instances

MonadTrans RelativeUrlT Source 
MonadTransControl RelativeUrlT Source 
MMonad RelativeUrlT Source 
MFunctor RelativeUrlT Source 
MonadRWS r w s m => MonadRWS r w s (RelativeUrlT m) Source 
Applicative m => MonadUrl Rel File (RelativeUrlT m) Source 
Applicative m => MonadUrl Rel Dir (RelativeUrlT m) Source 
MonadBase b m => MonadBase b (RelativeUrlT m) Source 
MonadError e m => MonadError e (RelativeUrlT m) Source 
MonadBaseControl b m => MonadBaseControl b (RelativeUrlT m) Source 
MonadReader r m => MonadReader r (RelativeUrlT m) Source 
MonadWriter w m => MonadWriter w (RelativeUrlT m) Source 
MonadState s m => MonadState s (RelativeUrlT m) Source 
Monad m => Monad (RelativeUrlT m) Source 
Functor m => Functor (RelativeUrlT m) Source 
MonadFix m => MonadFix (RelativeUrlT m) Source 
Applicative m => Applicative (RelativeUrlT m) Source 
Alternative m => Alternative (RelativeUrlT m) Source 
MonadPlus m => MonadPlus (RelativeUrlT m) Source 
MonadIO m => MonadIO (RelativeUrlT m) Source 
MonadThrow m => MonadThrow (RelativeUrlT m) Source 
MonadMask m => MonadMask (RelativeUrlT m) Source 
MonadCatch m => MonadCatch (RelativeUrlT m) Source 
MonadCont m => MonadCont (RelativeUrlT m) Source 
(MonadResource m, MonadBase IO m) => MonadResource (RelativeUrlT m) Source 
MonadLogger m => MonadLogger (RelativeUrlT m) Source 
Eq (m a) => Eq (RelativeUrlT m a) Source 
Ord (m a) => Ord (RelativeUrlT m a) Source 
Show (m a) => Show (RelativeUrlT m a) Source 
type StT RelativeUrlT a = a Source 
type StM (RelativeUrlT m) a = ComposeSt RelativeUrlT m a Source 

Grounded Urls

newtype GroundedUrlT m a Source

Constructors

GroundedUrlT 

Fields

runGroundedUrlT :: m a
 

Instances

MonadTrans GroundedUrlT Source 
MonadTransControl GroundedUrlT Source 
MMonad GroundedUrlT Source 
MFunctor GroundedUrlT Source 
MonadRWS r w s m => MonadRWS r w s (GroundedUrlT m) Source 
Applicative m => MonadUrl Abs File (GroundedUrlT m) Source 
Applicative m => MonadUrl Abs Dir (GroundedUrlT m) Source 
MonadBase b m => MonadBase b (GroundedUrlT m) Source 
MonadError e m => MonadError e (GroundedUrlT m) Source 
MonadBaseControl b m => MonadBaseControl b (GroundedUrlT m) Source 
MonadReader r m => MonadReader r (GroundedUrlT m) Source 
MonadWriter w m => MonadWriter w (GroundedUrlT m) Source 
MonadState s m => MonadState s (GroundedUrlT m) Source 
Monad m => Monad (GroundedUrlT m) Source 
Functor m => Functor (GroundedUrlT m) Source 
MonadFix m => MonadFix (GroundedUrlT m) Source 
Applicative m => Applicative (GroundedUrlT m) Source 
Alternative m => Alternative (GroundedUrlT m) Source 
MonadPlus m => MonadPlus (GroundedUrlT m) Source 
MonadIO m => MonadIO (GroundedUrlT m) Source 
MonadThrow m => MonadThrow (GroundedUrlT m) Source 
MonadMask m => MonadMask (GroundedUrlT m) Source 
MonadCatch m => MonadCatch (GroundedUrlT m) Source 
MonadCont m => MonadCont (GroundedUrlT m) Source 
(MonadResource m, MonadBase IO m) => MonadResource (GroundedUrlT m) Source 
MonadLogger m => MonadLogger (GroundedUrlT m) Source 
Eq (m a) => Eq (GroundedUrlT m a) Source 
Ord (m a) => Ord (GroundedUrlT m a) Source 
Show (m a) => Show (GroundedUrlT m a) Source 
type StT GroundedUrlT a = a Source 
type StM (GroundedUrlT m) a = ComposeSt GroundedUrlT m a Source 

Absolute Urls

newtype AbsoluteUrlT m a Source

Constructors

AbsoluteUrlT 

Fields

runAbsoluteUrlT :: UrlAuthority -> m a
 

Instances

MonadTrans AbsoluteUrlT Source 
MonadTransControl AbsoluteUrlT Source 
MMonad AbsoluteUrlT Source 
MFunctor AbsoluteUrlT Source 
MonadRWS r w s m => MonadRWS r w s (AbsoluteUrlT m) Source 
Applicative m => MonadUrl Abs File (AbsoluteUrlT m) Source 
Applicative m => MonadUrl Abs Dir (AbsoluteUrlT m) Source 
MonadBase b m => MonadBase b (AbsoluteUrlT m) Source 
MonadError e m => MonadError e (AbsoluteUrlT m) Source 
MonadBaseControl b m => MonadBaseControl b (AbsoluteUrlT m) Source 
MonadReader r m => MonadReader r (AbsoluteUrlT m) Source 
MonadWriter w m => MonadWriter w (AbsoluteUrlT m) Source 
MonadState s m => MonadState s (AbsoluteUrlT m) Source 
Monad m => Monad (AbsoluteUrlT m) Source 
Functor m => Functor (AbsoluteUrlT m) Source 
Applicative m => Applicative (AbsoluteUrlT m) Source 
MonadIO m => MonadIO (AbsoluteUrlT m) Source 
MonadThrow m => MonadThrow (AbsoluteUrlT m) Source 
MonadMask m => MonadMask (AbsoluteUrlT m) Source 
MonadCatch m => MonadCatch (AbsoluteUrlT m) Source 
MonadCont m => MonadCont (AbsoluteUrlT m) Source 
MonadResource m => MonadResource (AbsoluteUrlT m) Source 
MonadLogger m => MonadLogger (AbsoluteUrlT m) Source 
type StT AbsoluteUrlT a = a Source 
type StM (AbsoluteUrlT m) a = ComposeSt AbsoluteUrlT m a Source