Copyright | (c) Athan L. Clark |
---|---|
License | MIT |
Maintainer | Athan L. Clark <athan.clark@gmail.com> |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
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.
- class MonadUrl base type' m where
- class ToLocation sym base type' | sym -> base type' where
- toLocation :: MonadThrow m => sym -> m (Location base type')
- data UrlAuthority = UrlAuthority {}
- showUrlAuthority :: UrlAuthority -> String
- data UrlAuthent = UrlAuthent {}
- showUrlAuthent :: UrlAuthent -> String
- newtype RelativeUrlT m a = RelativeUrlT {
- runRelativeUrlT :: m a
- type RelativeUrl = RelativeUrlT Identity
- newtype GroundedUrlT m a = GroundedUrlT {
- runGroundedUrlT :: m a
- type GroundedUrl = GroundedUrlT Identity
- newtype AbsoluteUrlT m a = AbsoluteUrlT {
- runAbsoluteUrlT :: UrlAuthority -> m a
- type AbsoluteUrl = AbsoluteUrlT Identity
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.
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.
toLocation :: MonadThrow m => sym -> m (Location base type') Source
Types
data UrlAuthent Source
showUrlAuthent :: UrlAuthent -> String Source
Relative Urls
newtype RelativeUrlT m a Source
RelativeUrlT | |
|
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 |
type RelativeUrl = RelativeUrlT Identity Source
Grounded Urls
newtype GroundedUrlT m a Source
GroundedUrlT | |
|
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 |
type GroundedUrl = GroundedUrlT Identity Source
Absolute Urls
newtype AbsoluteUrlT m a Source
AbsoluteUrlT | |
|
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 |
type AbsoluteUrl = AbsoluteUrlT Identity Source