-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Abstraction for markup languages -- @package markup @version 0.0.1 module Data.Markup.Types -- | Mirror of the ReaderT monad transformer - used to coerce markup to -- inline rendering. newtype InlineMarkupT i m a InlineMarkupT :: (i -> m a) -> InlineMarkupT i m a runInlineMarkupT :: InlineMarkupT i m a -> i -> m a -- | Mirror of the ReaderT monad transformer - used to coerce markup to -- hosted rendering. newtype HostedMarkupT i m a HostedMarkupT :: (i -> m a) -> HostedMarkupT i m a runHostedMarkupT :: HostedMarkupT i m a -> i -> m a -- | Mirror of the ReaderT monad transformer - used to coerce markup to -- local rendering. newtype LocalMarkupT i m a LocalMarkupT :: (i -> m a) -> LocalMarkupT i m a runLocalMarkupT :: LocalMarkupT i m a -> i -> m a instance Functor m => Functor (InlineMarkupT i m) instance Functor m => Functor (HostedMarkupT i m) instance Functor m => Functor (LocalMarkupT i m) instance Monad m => MonadReader i (LocalMarkupT i m) instance MonadTrans (LocalMarkupT i) instance MonadPlus m => MonadPlus (LocalMarkupT i m) instance Monad m => Monad (LocalMarkupT i m) instance Alternative f => Alternative (LocalMarkupT i f) instance Applicative f => Applicative (LocalMarkupT i f) instance Monad m => MonadReader i (HostedMarkupT i m) instance MonadTrans (HostedMarkupT i) instance MonadPlus m => MonadPlus (HostedMarkupT i m) instance Monad m => Monad (HostedMarkupT i m) instance Alternative f => Alternative (HostedMarkupT i f) instance Applicative f => Applicative (HostedMarkupT i f) instance Monad m => MonadReader i (InlineMarkupT i m) instance MonadTrans (InlineMarkupT i) instance MonadPlus m => MonadPlus (InlineMarkupT i m) instance Monad m => Monad (InlineMarkupT i m) instance Alternative f => Alternative (InlineMarkupT i f) instance Applicative f => Applicative (InlineMarkupT i f) module Data.Markup.Class -- | Overload assets and their markup library, over some deployment class Markup markup t (m :: * -> *) renderMarkup :: Markup markup t m => t -> m markup -- | Assets that implement this (with their representing markup library) -- can be rendered as Inline class InlineMarkup markup t input renderInline :: InlineMarkup markup t input => t -> input -> markup -- | Assets that implement this can be rendered as hosted. class HostedMarkup markup t input renderHosted :: HostedMarkup markup t input => t -> input -> markup -- | Assets that implement this can be rendered as local. class LocalMarkup markup t input renderLocal :: LocalMarkup markup t input => t -> input -> markup instance (LocalMarkup markup t input, Monad m) => Markup markup t (LocalMarkupT input m) instance (HostedMarkup markup t input, Monad m) => Markup markup t (HostedMarkupT input m) instance (InlineMarkup markup t input, Monad m) => Markup markup t (InlineMarkupT input m) 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 input MarkupM => LocalMarkup (MarkupM ()) JavaScript input instance ToValue a => HostedMarkup (MarkupM ()) JavaScript a instance ToMarkup a => InlineMarkup (MarkupM ()) JavaScript a instance Url input MarkupM => LocalMarkup (MarkupM ()) Image input instance ToValue a => HostedMarkup (MarkupM ()) Image a instance (Monad m, Url input m) => LocalMarkup (HtmlT m ()) JavaScript input instance Monad m => HostedMarkup (HtmlT m ()) JavaScript Text instance Monad m => InlineMarkup (HtmlT m ()) JavaScript Text instance Monad m => InlineMarkup (HtmlT m ()) JavaScript Text instance (Monad m, Url input m) => LocalMarkup (HtmlT m ()) Image input instance Monad m => HostedMarkup (HtmlT m ()) Image Text module Data.Markup