Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- data GETParam = GETParam {}
- renderGETParam :: GETParam -> Text
- data UrlString = UrlString {}
- renderUrlString :: UrlString -> Text
- (<?>) :: Text -> (Text, Text) -> UrlString
- (<&>) :: UrlString -> (Text, Text) -> UrlString
- expandRelative :: UrlString -> Text
- expandGrounded :: UrlString -> Text
- expandAbsolute :: MonadReader Text m => UrlString -> m Text
- expandAbsoluteWith :: MonadReader a m => UrlString -> (a -> Text) -> m Text
- newtype RelativeUrlT m a = RelativeUrlT {
- runRelativeUrlT :: Text -> m a
- newtype RelativeUrl a = RelativeUrl {
- runRelativeUrl :: Text -> a
- newtype GroundedUrlT m a = GroundedUrlT {
- runGroundedUrlT :: Text -> m a
- newtype GroundedUrl a = GroundedUrl {
- runGroundedUrl :: Text -> a
- newtype AbsoluteUrlT m a = AbsoluteUrlT {
- runAbsoluteUrlT :: Text -> m a
- newtype AbsoluteUrl a = AbsoluteUrl {
- runAbsoluteUrl :: Text -> a
Documentation
A GET parameter encoded in a Url.
renderGETParam :: GETParam -> Text Source
Render a GET parameter pair.
A Url string - a target page and GET parameters.
Eq UrlString | |
Show UrlString | |
Url UrlString AbsoluteUrl | |
Url UrlString GroundedUrl | |
Url UrlString RelativeUrl | |
Monad m => Url UrlString (AbsoluteUrlT m) | |
Monad m => Url UrlString (GroundedUrlT m) | |
Monad m => Url UrlString (RelativeUrlT m) |
renderUrlString :: UrlString -> Text Source
Render a Url String simply - this is equivalent to expandRelative
.
:: Text | Target string |
-> (Text, Text) | GET Parameter |
-> UrlString |
Lifts a target path with some GET parameter chunks into a UrlString
.
Adds more GET parameters to a UrlString
.
expandRelative :: UrlString -> Text Source
Render the Url String as relative
expandGrounded :: UrlString -> Text Source
Render the Url String as grounded
expandAbsolute :: MonadReader Text m => UrlString -> m Text Source
Render the Url String as absolute - getting the root from a MonadReader.
expandAbsoluteWith :: MonadReader a m => UrlString -> (a -> Text) -> m Text Source
Render the Url String as absolute, but with your own configuration type.
data SiteConfig = SiteConfig { host :: T.Text , cdnHost :: T.Text } deriving (Show, Eq) foo :: HtmlT (Reader SiteConfig) () foo = do url <- lift $ expandAbsoluteWith ("foo.php" <?> ("bar","baz")) host script_ [src_ url] "" bar :: LT.Text bar = (runReader (runTextT foo)) $ SiteConfig "example.com" "cdn.example.com"
newtype RelativeUrlT m a Source
Rendering mode transformer. This isn't an instance of UrlReader
- to use,
simple lift
as many levels as you need:
foo :: Monad m => HtmlT (RelativeUrlT m) () foo = do url <- lift $ renderUrl $ "foo.php" <?> ("bar","baz") script_ [src_ url] ""
When rendering foo
, simply use the Transformer's run
function to convert
it to a reader:
bar :: Monad m => m LT.Text bar = (runRelativeUrlT (renderTextT foo)) "example.com"
It is generally simpler (but more restrictive) to use the non-transformer variety.
RelativeUrlT | |
|
MonadTrans RelativeUrlT | |
Monad m => MonadReader Text (RelativeUrlT m) | |
Monad m => Url UrlString (RelativeUrlT m) | |
Monad m => Monad (RelativeUrlT m) | |
Functor f => Functor (RelativeUrlT f) | |
Applicative f => Applicative (RelativeUrlT f) |
newtype RelativeUrl a Source
Concrete Monad for automatically coercing HtmlT's to use a mode of Url rendering (relative, grounded, or absolute).
foo :: HtmlT RelativeUrl () foo = do url <- lift $ renderUrl $ "foo.php" <?> ("bar","baz") script_ [src_ url] ""
when rendering these simple monads for automatic conversion via coercion, use
the runUrlReader
member function of the UrlReader
typeclass:
bar :: LT.Text bar = (runUrlReader (renderTextT foo)) "example.com"
To change the mode of rendering, simple change the coerced type of foo
.
RelativeUrl | |
|
Monad RelativeUrl | |
Functor RelativeUrl | |
Applicative RelativeUrl | |
UrlReader RelativeUrl | |
MonadReader Text RelativeUrl | |
Url UrlString RelativeUrl |
newtype GroundedUrlT m a Source
GroundedUrlT | |
|
MonadTrans GroundedUrlT | |
Monad m => MonadReader Text (GroundedUrlT m) | |
Monad m => Url UrlString (GroundedUrlT m) | |
Monad m => Monad (GroundedUrlT m) | |
Functor f => Functor (GroundedUrlT f) | |
Applicative f => Applicative (GroundedUrlT f) |
newtype GroundedUrl a Source
GroundedUrl | |
|
Monad GroundedUrl | |
Functor GroundedUrl | |
Applicative GroundedUrl | |
UrlReader GroundedUrl | |
MonadReader Text GroundedUrl | |
Url UrlString GroundedUrl |
newtype AbsoluteUrlT m a Source
AbsoluteUrlT | |
|
MonadTrans AbsoluteUrlT | |
Monad m => MonadReader Text (AbsoluteUrlT m) | |
Monad m => Url UrlString (AbsoluteUrlT m) | |
Monad m => Monad (AbsoluteUrlT m) | |
Functor f => Functor (AbsoluteUrlT f) | |
Applicative f => Applicative (AbsoluteUrlT f) |
newtype AbsoluteUrl a Source
AbsoluteUrl | |
|
Monad AbsoluteUrl | |
Functor AbsoluteUrl | |
Applicative AbsoluteUrl | |
UrlReader AbsoluteUrl | |
MonadReader Text AbsoluteUrl | |
Url UrlString AbsoluteUrl |