-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Abstraction for markup languages -- -- This library tries to make things more uniformly controlled when -- working with markup languages in haskell - namely deployment of -- markup assets. -- -- Deployment, from this library's perspective, means how -- something can be rendered to markup, yet still achieve the same -- "result" to the end user (namely the DOM). -- -- We use monad transformers to infer the deployment mechanism for a -- context of markup. The three deployment mechanisms provided include -- inline (content is slapped between markup tags), hosted -- (entirely external - uses raw text as a url), and local (which -- uses the urlpath library to realize what kind of link to -- create). -- -- As an example, here is remotely hosted image: -- --
-- image = deploy Image "foo.png" :: HostedMarkupM (Html ()) -- -- λ> renderMarkup image -- -- <img src="foo.png"> ---- -- Here is the same example, going relative instead: -- --
-- image :: LocalMarkupM (HtmlT AbsoluteUrl ())
-- image = deploy Image $ "foo.png" <?> ("some","getparam")
--
-- λ> (runUrlReader $ renderTextT $ renderMarkup image $
-- ) "example.com"
--
-- "<img src=\"example.com/foo.png?some=getparam\">"
--
@package markup
@version 0.0.4
module Data.Markup.Types
newtype InlineMarkupT m a
InlineMarkupT :: m a -> InlineMarkupT m a
runInlineMarkupT :: InlineMarkupT m a -> m a
newtype HostedMarkupT m a
HostedMarkupT :: m a -> HostedMarkupT m a
runHostedMarkupT :: HostedMarkupT m a -> m a
newtype LocalMarkupT m a
LocalMarkupT :: m a -> LocalMarkupT m a
runLocalMarkupT :: LocalMarkupT m a -> m a
newtype InlineMarkupM a
InlineMarkupM :: a -> InlineMarkupM a
runInlineMarkupM :: InlineMarkupM a -> a
newtype HostedMarkupM a
HostedMarkupM :: a -> HostedMarkupM a
runHostedMarkupM :: HostedMarkupM a -> a
newtype LocalMarkupM a
LocalMarkupM :: a -> LocalMarkupM a
runLocalMarkupM :: LocalMarkupM a -> a
instance Functor m => Functor (InlineMarkupT m)
instance Functor m => Functor (HostedMarkupT m)
instance Functor m => Functor (LocalMarkupT m)
instance Functor InlineMarkupM
instance Functor HostedMarkupM
instance Functor LocalMarkupM
instance Monad w => Monoid (LocalMarkupM (w a))
instance Monad LocalMarkupM
instance Applicative LocalMarkupM
instance Monad w => Monoid (HostedMarkupM (w a))
instance Monad HostedMarkupM
instance Applicative HostedMarkupM
instance Monad w => Monoid (InlineMarkupM (w a))
instance Monad InlineMarkupM
instance Applicative InlineMarkupM
instance MonadTrans LocalMarkupT
instance Monad m => Monad (LocalMarkupT m)
instance Applicative f => Applicative (LocalMarkupT f)
instance MonadTrans HostedMarkupT
instance Monad m => Monad (HostedMarkupT m)
instance Applicative f => Applicative (HostedMarkupT f)
instance MonadTrans InlineMarkupT
instance Monad m => Monad (InlineMarkupT m)
instance Applicative f => Applicative (InlineMarkupT f)
module Data.Markup.Class
-- | Overload assets and their markup library, over some deployment
class Deploy symbol input markup (m :: * -> *)
deploy :: Deploy symbol input markup m => symbol -> input -> m markup
-- | Overload extraction of (co)monad
class Monad m => Markup (m :: * -> *)
renderMarkup :: Markup m => m a -> a
toMarkup :: Markup m => a -> m a
instance Markup LocalMarkupM
instance Markup HostedMarkupM
instance Markup InlineMarkupM
module Data.Markup.Library
-- | Abstract data type of an "image" asset.
data Image
Image :: Image
-- | Abstract data type of javascript.
data JavaScript
JavaScript :: JavaScript
instance Show Image
instance Eq Image
instance Show JavaScript
instance Eq JavaScript
instance (Url Text MarkupM, Monad m) => Deploy JavaScript (UrlString Text) (MarkupM ()) (LocalMarkupT m)
instance (Url Text MarkupM, Monad m) => Deploy JavaScript Text (MarkupM ()) (LocalMarkupT m)
instance (ToValue input, Monad m) => Deploy JavaScript input (MarkupM ()) (HostedMarkupT m)
instance (ToMarkup input, Monad m) => Deploy JavaScript input (MarkupM ()) (InlineMarkupT m)
instance Url Text MarkupM => Deploy JavaScript (UrlString Text) (MarkupM ()) LocalMarkupM
instance Url Text MarkupM => Deploy JavaScript Text (MarkupM ()) LocalMarkupM
instance ToValue input => Deploy JavaScript input (MarkupM ()) HostedMarkupM
instance ToMarkup input => Deploy JavaScript input (MarkupM ()) InlineMarkupM
instance (Url Text MarkupM, Monad m) => Deploy Image (UrlString Text) (MarkupM ()) (LocalMarkupT m)
instance (Url Text MarkupM, Monad m) => Deploy Image Text (MarkupM ()) (LocalMarkupT m)
instance (ToValue input, Monad m) => Deploy Image input (MarkupM ()) (HostedMarkupT m)
instance Url Text MarkupM => Deploy Image (UrlString Text) (MarkupM ()) LocalMarkupM
instance Url Text MarkupM => Deploy Image Text (MarkupM ()) LocalMarkupM
instance ToValue input => Deploy Image input (MarkupM ()) HostedMarkupM
instance (Url Text m, Monad m') => Deploy JavaScript (UrlString Text) (HtmlT m ()) (LocalMarkupT m')
instance (Monad m, Monad m') => Deploy JavaScript Text (HtmlT m ()) (HostedMarkupT m')
instance (Monad m, Monad m') => Deploy JavaScript Text (HtmlT m ()) (InlineMarkupT m')
instance (Monad m, Monad m') => Deploy JavaScript Text (HtmlT m ()) (InlineMarkupT m')
instance Url Text m => Deploy JavaScript (UrlString Text) (HtmlT m ()) LocalMarkupM
instance Monad m => Deploy JavaScript Text (HtmlT m ()) HostedMarkupM
instance Monad m => Deploy JavaScript Text (HtmlT m ()) InlineMarkupM
instance Monad m => Deploy JavaScript Text (HtmlT m ()) InlineMarkupM
instance (Url Text m, Monad m') => Deploy Image (UrlString Text) (HtmlT m ()) (LocalMarkupT m')
instance (Monad m, Monad m') => Deploy Image Text (HtmlT m ()) (LocalMarkupT m')
instance (Monad m, Monad m') => Deploy Image Text (HtmlT m ()) (HostedMarkupT m')
instance Url Text m => Deploy Image (UrlString Text) (HtmlT m ()) LocalMarkupM
instance Monad m => Deploy Image Text (HtmlT m ()) LocalMarkupM
instance Monad m => Deploy Image Text (HtmlT m ()) HostedMarkupM
module Data.Markup