-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A fast and nice HTML templating library with distinct compilation/rendering phases. -- -- A fast and nice HTML templating library with distinct -- compilation/rendering phases. @package nice-html @version 0.4.1 module Text.Html.Nice.Internal type AttrName = Text data Attr a (:=) :: !AttrName -> !Text -> Attr a [attrKey] :: Attr a -> !AttrName [attrVal] :: Attr a -> !Text (:-) :: !AttrName -> a -> Attr a [attrKey] :: Attr a -> !AttrName [attrValHole] :: Attr a -> a data IsEscaped DoEscape :: IsEscaped Don'tEscape :: IsEscaped data SomeText LazyT :: Text -> SomeText BuilderT :: Builder -> SomeText StrictT :: !Text -> SomeText -- | A very simple HTML DSL data Markup' a Doctype :: Markup' a Node :: !Text -> !(Vector (Attr a)) -> (Markup' a) -> Markup' a VoidNode :: !Text -> !(Vector (Attr a)) -> Markup' a List :: [Markup' a] -> Markup' a Stream :: (Stream a) -> Markup' a Text :: !IsEscaped -> !SomeText -> Markup' a Hole :: !IsEscaped -> a -> Markup' a Precompiled :: !(FastMarkup a) -> Markup' a Empty :: Markup' a data Stream a ListS :: [s] -> !(FastMarkup (s -> a)) -> Stream a -- | Don't use this! It's a lie! unstream :: (FastMarkup a -> b) -> Stream a -> (b -> c -> c) -> c -> c data a (:$) b (:$) :: (FastMarkup (a -> b)) -> a -> (:$) a b data FastMarkup a Bunch :: {-# UNPACK #-} !(Vector (FastMarkup a)) -> FastMarkup a FStream :: !(Stream a) -> FastMarkup a FHole :: !IsEscaped -> !a -> FastMarkup a FLText :: Text -> FastMarkup a FSText :: {-# UNPACK #-} !Text -> FastMarkup a FBuilder :: !Builder -> FastMarkup a FEmpty :: FastMarkup a FDeep :: (FastMarkup (FastMarkup a)) -> FastMarkup a data Markup'F (a_aePQ :: Type) r_ai8u DoctypeF :: Markup'F r_ai8u NodeF :: !Text -> !(Vector (Attr a_aePQ)) -> r_ai8u -> Markup'F r_ai8u VoidNodeF :: !Text -> !(Vector (Attr a_aePQ)) -> Markup'F r_ai8u ListF :: [r_ai8u] -> Markup'F r_ai8u StreamF :: (Stream a_aePQ) -> Markup'F r_ai8u TextF :: !IsEscaped -> !SomeText -> Markup'F r_ai8u HoleF :: !IsEscaped -> a_aePQ -> Markup'F r_ai8u PrecompiledF :: !(FastMarkup a_aePQ) -> Markup'F r_ai8u EmptyF :: Markup'F r_ai8u -- | Unlike plate, this uses Monad. That's because -- traverse over Vector is really quite slow. plateFM :: Monad m => (FastMarkup a -> m (FastMarkup a)) -> FastMarkup a -> m (FastMarkup a) compileAttrs :: forall a. Vector (Attr a) -> (Builder, Vector (Attr a)) escapeText :: Text -> Builder escape :: SomeText -> Builder toText :: Builder -> Text fastAttr :: Attr a -> FastMarkup a fast :: Markup' a -> FastMarkup a -- | Look for an immediate string-like term and render that immediateRender :: FastMarkup a -> Maybe Builder -- | Flatten a vector of 'FastMarkup. String-like terms that are next to -- eachother should be combined munch :: Vector (FastMarkup a) -> Vector (FastMarkup a) -- | Recursively flatten FastMarkup until doing so does nothing flatten :: FastMarkup a -> FastMarkup a -- | Run all Text builders strictify :: FastMarkup a -> FastMarkup a -- | Compile Markup'' compile_ :: Markup' a -> FastMarkup a recompile :: FastMarkup a -> FastMarkup a unlayer :: FastMarkup (FastMarkup a) -> FastMarkup a -- | Render FastMarkup renderM :: Monad m => (a -> m Builder) -> FastMarkup a -> m Builder -- | Render FastMarkup by recursively rendering any sub-markup. renderMs :: Monad m => (a -> m (FastMarkup Void)) -> FastMarkup a -> m Builder -- | Render FastMarkup that has no holes. render :: FastMarkup Void -> Builder r_ :: Render a Identity => a -> Builder class Render a m r :: Render a m => a -> m Builder -- | Defer application of an argument to rendering newtype RenderToFastMarkup a RenderToFastMarkup :: a -> RenderToFastMarkup a [unToFastMarkup] :: RenderToFastMarkup a -> a class ToFastMarkup a toFastMarkup :: ToFastMarkup a => a -> FastMarkup b newtype AsDecimal a AsDecimal :: a -> AsDecimal a [asDecimal] :: AsDecimal a -> a newtype AsHex a AsHex :: a -> AsHex a [asHex] :: AsHex a -> a newtype AsRealFloat a AsRealFloat :: a -> AsRealFloat a [asRealFloat] :: AsRealFloat a -> a instance GHC.Float.RealFloat a => Text.Html.Nice.Internal.ToFastMarkup (Text.Html.Nice.Internal.AsRealFloat a) instance GHC.Real.Integral a => Text.Html.Nice.Internal.ToFastMarkup (Text.Html.Nice.Internal.AsHex a) instance GHC.Real.Integral a => Text.Html.Nice.Internal.ToFastMarkup (Text.Html.Nice.Internal.AsDecimal a) instance (Text.Html.Nice.Internal.ToFastMarkup a, GHC.Base.Monad m) => Text.Html.Nice.Internal.Render (Text.Html.Nice.Internal.RenderToFastMarkup a) m instance Text.Html.Nice.Internal.ToFastMarkup (Text.Html.Nice.Internal.FastMarkup Data.Void.Void) instance Text.Html.Nice.Internal.ToFastMarkup Data.Text.Internal.Text instance Text.Html.Nice.Internal.ToFastMarkup Data.Text.Internal.Lazy.Text instance Text.Html.Nice.Internal.ToFastMarkup Data.Text.Internal.Builder.Builder instance (Text.Html.Nice.Internal.Render b m, m' ~ Control.Monad.Trans.Reader.ReaderT a m) => Text.Html.Nice.Internal.Render (a -> b) m' instance (GHC.Base.Monad m, Text.Html.Nice.Internal.Render b m) => Text.Html.Nice.Internal.Render (a Text.Html.Nice.Internal.:$ b) m instance GHC.Base.Monad m => Text.Html.Nice.Internal.Render Data.Void.Void m instance GHC.Base.Monad m => Text.Html.Nice.Internal.Render Data.Text.Internal.Builder.Builder m instance GHC.Base.Monad m => Text.Html.Nice.Internal.Render Data.Text.Internal.Text m instance GHC.Base.Monad m => Text.Html.Nice.Internal.Render Data.Text.Internal.Lazy.Text m instance (Text.Html.Nice.Internal.Render a m, GHC.Base.Monad m) => Text.Html.Nice.Internal.Render (Text.Html.Nice.Internal.FastMarkup a) m instance Data.Bifunctor.Bifunctor Text.Html.Nice.Internal.Markup'F instance Data.Traversable.Traversable (Text.Html.Nice.Internal.Markup'F a) instance Data.Foldable.Foldable (Text.Html.Nice.Internal.Markup'F a) instance GHC.Base.Functor (Text.Html.Nice.Internal.Markup'F a) instance Data.Functor.Foldable.Recursive (Text.Html.Nice.Internal.Markup' a) instance Data.Functor.Foldable.Corecursive (Text.Html.Nice.Internal.Markup' a) instance Data.Foldable.Foldable Text.Html.Nice.Internal.Markup' instance GHC.Base.Functor Text.Html.Nice.Internal.Markup' instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.Html.Nice.Internal.Markup' a) instance GHC.Show.Show a => GHC.Show.Show (Text.Html.Nice.Internal.Markup' a) instance GHC.Base.Functor ((Text.Html.Nice.Internal.:$) a) instance GHC.Generics.Generic (Text.Html.Nice.Internal.FastMarkup a) instance Data.Foldable.Foldable Text.Html.Nice.Internal.FastMarkup instance GHC.Base.Functor Text.Html.Nice.Internal.FastMarkup instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.Html.Nice.Internal.FastMarkup a) instance GHC.Show.Show a => GHC.Show.Show (Text.Html.Nice.Internal.FastMarkup a) instance GHC.Classes.Eq Text.Html.Nice.Internal.SomeText instance GHC.Show.Show Text.Html.Nice.Internal.SomeText instance GHC.Classes.Eq Text.Html.Nice.Internal.IsEscaped instance GHC.Show.Show Text.Html.Nice.Internal.IsEscaped instance Data.Traversable.Traversable Text.Html.Nice.Internal.Attr instance Data.Foldable.Foldable Text.Html.Nice.Internal.Attr instance GHC.Base.Functor Text.Html.Nice.Internal.Attr instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.Html.Nice.Internal.Attr a) instance GHC.Show.Show a => GHC.Show.Show (Text.Html.Nice.Internal.Attr a) instance GHC.Show.Show a => GHC.Show.Show (a Text.Html.Nice.Internal.:$ b) instance GHC.Show.Show a => GHC.Show.Show (Text.Html.Nice.Internal.Stream a) instance GHC.Classes.Eq (Text.Html.Nice.Internal.Stream a) instance GHC.Base.Functor Text.Html.Nice.Internal.Stream instance Data.Foldable.Foldable Text.Html.Nice.Internal.Stream instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Text.Html.Nice.Internal.Stream a) instance GHC.Base.Monoid (Text.Html.Nice.Internal.FastMarkup a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Text.Html.Nice.Internal.FastMarkup a) -- | A Free monad-based HTML markup monad. Unlike the writer-like -- monad in Text.Html.Nice.Writer, sequencing bits of markup -- together results in them being nested, rather than concatenated. -- -- There is no kitchen-sink of HTML5 elements provided. Use -- OverloadedLabels instead: #div :: Markup n () and #div -- :: MakeNode n () . -- -- Since the monad and applicative of Markup here nests rather -- than concatenates, the function nodes is provided to put a list -- of nodes in sequence. You can use OverloadedLists for convenient -- syntax here. -- -- Example Markup: -- --
--   #html >>
--   [ title >> "Title goes here"
--   , #body >>
--     [ #h1 >> "heading goes here"
--     , #p >> "i am a paragraph below the heading"
--     , do i <- branch [0..100]
--          builder (decimal i)
--     ]
--   ]
--   
module Text.Html.Nice.FreeMonad -- | Markup is a free monad based on the base functor to 'Markup\'F' -- -- Beware: this is a wacky monad. >> does *not* sequence -- nodes together; instead, it nests them. To lay out nodes sequentially, -- use nodes. -- --

Syntactic sugar

-- -- Markup supports OverloadedLabels, -- OverloadedStrings and OverloadedLists. -- --

OverloadedStrings

-- --
--   ("foo" :: Markup n a) = text "foo"
--   
-- --

OverloadedLists

-- --
--   ([a,b,c] :: Markup n a) = nodes [a,b,c]
--   
-- --

OverloadedLabels

-- -- The IsLabel instances give a convenient way to write nodes. -- --

Nodes without attributes

-- --
--   (#foo :: Markup n a) = node "foo" []
--   
-- --

Nodes with attributes

-- --
--   attr #foo [a,b,c] = node "foo" [a,b,c]
--   
data Markup n a data FastMarkup a runMarkup :: Markup n a -> Markup' n -- | Compile a Html for use with render and its friends. -- -- See also: compile_. compile :: Markup n a -> FastMarkup n -- | Render FastMarkup renderM :: Monad m => (a -> m Builder) -> FastMarkup a -> m Builder -- | Render FastMarkup by recursively rendering any sub-markup. renderMs :: Monad m => (a -> m (FastMarkup Void)) -> FastMarkup a -> m Builder -- | Render FastMarkup that has no holes. render :: FastMarkup Void -> Builder -- | Identity functor and monad. (a non-strict monad) newtype Identity a :: * -> * Identity :: a -> Identity a [runIdentity] :: Identity a -> a -- | O(n). Extract a lazy Text from a Builder with -- a default buffer size. The construction work takes place if and when -- the relevant part of the lazy Text is demanded. toLazyText :: Builder -> Text doctype :: Markup n a -- | Make a node with some attributes. node :: Text -> [Attr n] -> Markup n () data Attr a (:=) :: !AttrName -> !Text -> Attr a [attrKey] :: Attr a -> !AttrName [attrVal] :: Attr a -> !Text (:-) :: !AttrName -> a -> Attr a [attrKey] :: Attr a -> !AttrName [attrValHole] :: Attr a -> a -- | For use with OverloadedLabels. -- --
--   attr #x [a,b,c] = node "x" [a,b,c]
--   
attr :: MakeNode n a -> [Attr n] -> Markup n a -- | Empty node. Terminates Markup to this point empty :: Markup n a -- | Insert text and escape it text :: Text -> Markup n a -- | Insert text and escape it lazyText :: Text -> Markup n a -- | Insert text and escape it builder :: Builder -> Markup n a -- | Insert text and don't escape it unescape :: Text -> Markup n a -- | Insert text and escape it string :: String -> Markup n a -- | Insert a dynamic value. dynamic :: n -> Markup n a hole :: Markup (a -> a) t -- | Insert a sub-template. embed :: (t -> FastMarkup n) -> Markup (t -> FastMarkup n) a -- | For each element of a list, generate sequential markup nodes :: [Markup n a] -> Markup n a -- | For each element of a list of branches, generate sequential markup branch :: [a] -> Markup n a stream :: Foldable f => Markup (a -> n) r' -> Markup (f a -> FastMarkup n) r -- | Insert a sub-template. sub :: Markup n a -> Markup (FastMarkup n) a decimal :: Integral a => a -> Builder -- | Show a signed RealFloat value to full precision, using standard -- decimal notation for arguments whose absolute value lies between -- 0.1 and 9,999,999, and scientific notation -- otherwise. realFloat :: RealFloat a => a -> Builder -- | O(1). A Builder taking a Text, satisfying -- -- fromText :: Text -> Builder -- | O(1). A Builder taking a String, satisfying -- -- fromString :: String -> Builder -- | O(1). A Builder taking a lazy Text, -- satisfying -- -- fromLazyText :: Text -> Builder -- | A Builder is an efficient way to build lazy Text -- values. There are several functions for constructing builders, but -- only one to inspect them: to extract any data, you have to turn them -- into lazy Text values using toLazyText. -- -- Internally, a builder constructs a lazy Text by filling -- arrays piece by piece. As each buffer is filled, it is 'popped' off, -- to become a new chunk of the resulting lazy Text. All this is -- hidden from the user of the Builder. data Builder :: * -- | Uninhabited data type data Void :: * instance Control.Monad.Free.Class.MonadFree (Text.Html.Nice.Internal.Markup'F n) (Text.Html.Nice.FreeMonad.Markup n) instance GHC.Base.Monad (Text.Html.Nice.FreeMonad.Markup n) instance GHC.Base.Applicative (Text.Html.Nice.FreeMonad.Markup n) instance GHC.Base.Functor (Text.Html.Nice.FreeMonad.Markup n) instance (a ~ (), GHC.TypeLits.KnownSymbol s) => GHC.OverloadedLabels.IsLabel s (Text.Html.Nice.FreeMonad.MakeNode n a) instance Data.Default.Class.Default (Text.Html.Nice.FreeMonad.Markup n a) instance GHC.Base.Monoid (Text.Html.Nice.FreeMonad.Markup n a) instance Data.String.IsString (Text.Html.Nice.FreeMonad.Markup n a) instance GHC.Exts.IsList (Text.Html.Nice.FreeMonad.Markup n a) instance (a ~ (), GHC.TypeLits.KnownSymbol s) => GHC.OverloadedLabels.IsLabel s (Text.Html.Nice.FreeMonad.Markup n a) instance Data.Bifunctor.Bifunctor Text.Html.Nice.FreeMonad.Markup module Text.Html.Nice.Writer -- | A Writer-like monad data Markup p a -- | Insert text and escape it text :: Text -> Markup t () -- | Insert text and escape it lazyText :: Text -> Markup n () -- | Insert text and escape it builder :: Builder -> Markup n () -- | Insert text and escape it string :: String -> Markup n () doctype_ :: Markup p () -- | Insert text and don't escape it textRaw :: Text -> Markup t () -- | Insert text and don't escape it lazyTextRaw :: Text -> Markup n () -- | Insert text and don't escape it builderRaw :: Builder -> Markup n () -- | Insert text and don't escape it stringRaw :: String -> Markup n () class AddAttr a t | a -> t (!) :: AddAttr a t => MarkupLike a -> Attr t -> MarkupLike a infixl 8 ! dynamic :: p -> Markup p () dynamicRaw :: p -> Markup p () using :: ToFastMarkup b => (a -> b) -> Markup (a -> FastMarkup r) () -- | Sub-template sub :: Markup n a -> Markup (FastMarkup n) a -- | Map over the holes in a Markup. This necessarily discards any -- attributes currently being added that are not static. mapP :: (a -> b) -> Markup a r -> Markup b r stream :: Foldable f => Markup (a -> n) r -> Markup (f a -> FastMarkup n) r data Note a Note :: {-# UNPACK #-} !Int -> FastMarkup a -> Note a [noteId] :: Note a -> {-# UNPACK #-} !Int [noted] :: Note a -> FastMarkup a -- | Give a node a unique id -- -- Might be handy to build server-side react-esque systems note :: (Markup t a -> Markup t b) -> Markup t a -> Markup t (Note t, b) -- | Compile a Markup. Don't run this multiple times! compile :: Markup t a -> FastMarkup t -- | Compile a Markup. Don't run this multiple times! -- -- Same as compile but lets you use the result. runMarkup :: Markup t a -> (a, FastMarkup t) makeElement :: Text -> Markup p a -> Markup p a makeVoidElement :: Text -> Markup p () instance GHC.Base.Functor Text.Html.Nice.Writer.Note instance GHC.Show.Show a => GHC.Show.Show (Text.Html.Nice.Writer.Note a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.Html.Nice.Writer.Note a) instance Data.Traversable.Traversable (Text.Html.Nice.Writer.MarkupStep p) instance Data.Foldable.Foldable (Text.Html.Nice.Writer.MarkupStep p) instance GHC.Base.Functor (Text.Html.Nice.Writer.MarkupStep p) instance Text.Html.Nice.Writer.AddAttr (Text.Html.Nice.Writer.Markup t a -> Text.Html.Nice.Writer.Markup t b) t instance Text.Html.Nice.Writer.AddAttr (Text.Html.Nice.Writer.Markup t a) t instance GHC.Base.Functor (Text.Html.Nice.Writer.Markup p) instance GHC.Base.Applicative (Text.Html.Nice.Writer.Markup p) instance GHC.Base.Monad (Text.Html.Nice.Writer.Markup p) instance a ~ () => Data.String.IsString (Text.Html.Nice.Writer.Markup t a) module Text.Html.Nice.Writer.Html5 xmlns_ :: AttrName wrap_ :: AttrName width_ :: AttrName value_ :: AttrName usemap_ :: AttrName type_ :: AttrName title__ :: AttrName target_ :: AttrName tabindex_ :: AttrName summary__ :: AttrName subject_ :: AttrName style__ :: AttrName step_ :: AttrName start_ :: AttrName srcdoc_ :: AttrName src_ :: AttrName spellcheck_ :: AttrName span__ :: AttrName sizes_ :: AttrName size_ :: AttrName shape_ :: AttrName selected_ :: AttrName seamless_ :: AttrName scoped_ :: AttrName scope_ :: AttrName sandbox_ :: AttrName rowspan_ :: AttrName rows_ :: AttrName reversed_ :: AttrName required_ :: AttrName rel_ :: AttrName readonly_ :: AttrName radiogroup_ :: AttrName pubdate_ :: AttrName preload_ :: AttrName placeholder_ :: AttrName ping_ :: AttrName pattern_ :: AttrName optimum_ :: AttrName open_ :: AttrName onwaiting_ :: AttrName onvolumechange_ :: AttrName onunload_ :: AttrName onundo_ :: AttrName ontimeupdate_ :: AttrName onsuspend_ :: AttrName onsubmit_ :: AttrName onstorage_ :: AttrName onstalled_ :: AttrName onselect_ :: AttrName onseeking_ :: AttrName onseeked_ :: AttrName onscroll_ :: AttrName onresize_ :: AttrName onredo_ :: AttrName onreadystatechange_ :: AttrName onratechange_ :: AttrName onpropstate_ :: AttrName onprogress_ :: AttrName onplaying_ :: AttrName onplay_ :: AttrName onpause_ :: AttrName onpageshow_ :: AttrName onpagehide_ :: AttrName ononline_ :: AttrName onmousewheel_ :: AttrName onmouseup_ :: AttrName onmouseover_ :: AttrName onmouseout_ :: AttrName onmousemove_ :: AttrName onmousedown_ :: AttrName onmessage_ :: AttrName onloadstart_ :: AttrName onloadedmetadata_ :: AttrName onloadeddata_ :: AttrName onload_ :: AttrName onkeyup_ :: AttrName onkeydown_ :: AttrName oninvalid_ :: AttrName oninput_ :: AttrName onhaschange_ :: AttrName onforminput_ :: AttrName onformchange_ :: AttrName onfocus_ :: AttrName onerror_ :: AttrName onended_ :: AttrName onemptied_ :: AttrName ondurationchange_ :: AttrName ondrop_ :: AttrName ondragstart_ :: AttrName ondragover_ :: AttrName ondragleave_ :: AttrName ondragenter_ :: AttrName ondragend_ :: AttrName ondrag_ :: AttrName ondblclick_ :: AttrName onclick_ :: AttrName oncontextmenu_ :: AttrName onchange_ :: AttrName oncanplaythrough_ :: AttrName oncanplay_ :: AttrName onblur_ :: AttrName onbeforeprint_ :: AttrName onbeforeonload_ :: AttrName novalidate_ :: AttrName name_ :: AttrName multiple_ :: AttrName min_ :: AttrName method_ :: AttrName media_ :: AttrName maxlength_ :: AttrName max_ :: AttrName manifest_ :: AttrName low_ :: AttrName loop_ :: AttrName list_ :: AttrName lang_ :: AttrName label__ :: AttrName keytype_ :: AttrName itemtype_ :: AttrName itemscope_ :: AttrName itemprop_ :: AttrName item_ :: AttrName ismap_ :: AttrName id_ :: AttrName icon_ :: AttrName http_equiv_ :: AttrName hreflang_ :: AttrName href_ :: AttrName high_ :: AttrName hidden_ :: AttrName height_ :: AttrName headers_ :: AttrName formtarget_ :: AttrName formnovalidate_ :: AttrName formmethod_ :: AttrName formenctype_ :: AttrName formaction_ :: AttrName form__ :: AttrName for_ :: AttrName enctype_ :: AttrName draggable_ :: AttrName disabled_ :: AttrName dir_ :: AttrName defer_ :: AttrName datetime_ :: AttrName data_ :: AttrName coords_ :: AttrName controls_ :: AttrName contextmenu_ :: AttrName contenteditable_ :: AttrName content_ :: AttrName colspan_ :: AttrName cols_ :: AttrName class_ :: AttrName cite__ :: AttrName checked_ :: AttrName charset_ :: AttrName challenge_ :: AttrName autoplay_ :: AttrName autofocus_ :: AttrName autocomplete_ :: AttrName async_ :: AttrName alt_ :: AttrName action_ :: AttrName accesskey_ :: AttrName accept_charset_ :: AttrName accept_ :: AttrName wbr_ :: forall t_ax6W. Markup t_ax6W () track_ :: forall t_ax6U. Markup t_ax6U () source_ :: forall t_ax6S. Markup t_ax6S () param_ :: forall t_ax6Q. Markup t_ax6Q () meta_ :: forall t_ax6O. Markup t_ax6O () menuitem_ :: forall t_ax6M. Markup t_ax6M () link_ :: forall t_ax6K. Markup t_ax6K () keygen_ :: forall t_ax6I. Markup t_ax6I () input_ :: forall t_ax6G. Markup t_ax6G () img_ :: forall t_ax6E. Markup t_ax6E () hr_ :: forall t_ax6C. Markup t_ax6C () embed_ :: forall t_ax6A. Markup t_ax6A () col_ :: forall t_ax6y. Markup t_ax6y () br_ :: forall t_ax6w. Markup t_ax6w () base_ :: forall t_ax6u. Markup t_ax6u () area_ :: forall t_ax6s. Markup t_ax6s () video_ :: forall t_ax6p a_ax6q. Markup t_ax6p a_ax6q -> Markup t_ax6p a_ax6q var_ :: forall t_ax6m a_ax6n. Markup t_ax6m a_ax6n -> Markup t_ax6m a_ax6n ul_ :: forall t_ax6j a_ax6k. Markup t_ax6j a_ax6k -> Markup t_ax6j a_ax6k tr_ :: forall t_ax6g a_ax6h. Markup t_ax6g a_ax6h -> Markup t_ax6g a_ax6h title_ :: forall t_ax6d a_ax6e. Markup t_ax6d a_ax6e -> Markup t_ax6d a_ax6e time_ :: forall t_ax6a a_ax6b. Markup t_ax6a a_ax6b -> Markup t_ax6a a_ax6b thead_ :: forall t_ax67 a_ax68. Markup t_ax67 a_ax68 -> Markup t_ax67 a_ax68 th_ :: forall t_ax64 a_ax65. Markup t_ax64 a_ax65 -> Markup t_ax64 a_ax65 tfoot_ :: forall t_ax61 a_ax62. Markup t_ax61 a_ax62 -> Markup t_ax61 a_ax62 textarea_ :: forall t_ax5Y a_ax5Z. Markup t_ax5Y a_ax5Z -> Markup t_ax5Y a_ax5Z td_ :: forall t_ax5V a_ax5W. Markup t_ax5V a_ax5W -> Markup t_ax5V a_ax5W tbody_ :: forall t_ax5S a_ax5T. Markup t_ax5S a_ax5T -> Markup t_ax5S a_ax5T table_ :: forall t_ax5P a_ax5Q. Markup t_ax5P a_ax5Q -> Markup t_ax5P a_ax5Q sup_ :: forall t_ax5M a_ax5N. Markup t_ax5M a_ax5N -> Markup t_ax5M a_ax5N summary_ :: forall t_ax5J a_ax5K. Markup t_ax5J a_ax5K -> Markup t_ax5J a_ax5K sub_ :: forall t_ax5G a_ax5H. Markup t_ax5G a_ax5H -> Markup t_ax5G a_ax5H style_ :: forall t_ax5D a_ax5E. Markup t_ax5D a_ax5E -> Markup t_ax5D a_ax5E strong_ :: forall t_ax5A a_ax5B. Markup t_ax5A a_ax5B -> Markup t_ax5A a_ax5B span_ :: forall t_ax5x a_ax5y. Markup t_ax5x a_ax5y -> Markup t_ax5x a_ax5y small_ :: forall t_ax5u a_ax5v. Markup t_ax5u a_ax5v -> Markup t_ax5u a_ax5v select_ :: forall t_ax5r a_ax5s. Markup t_ax5r a_ax5s -> Markup t_ax5r a_ax5s section_ :: forall t_ax5o a_ax5p. Markup t_ax5o a_ax5p -> Markup t_ax5o a_ax5p script_ :: forall t_ax5l a_ax5m. Markup t_ax5l a_ax5m -> Markup t_ax5l a_ax5m samp_ :: forall t_ax5i a_ax5j. Markup t_ax5i a_ax5j -> Markup t_ax5i a_ax5j ruby_ :: forall t_ax5f a_ax5g. Markup t_ax5f a_ax5g -> Markup t_ax5f a_ax5g rt_ :: forall t_ax5c a_ax5d. Markup t_ax5c a_ax5d -> Markup t_ax5c a_ax5d rp_ :: forall t_ax59 a_ax5a. Markup t_ax59 a_ax5a -> Markup t_ax59 a_ax5a q_ :: forall t_ax56 a_ax57. Markup t_ax56 a_ax57 -> Markup t_ax56 a_ax57 progress_ :: forall t_ax53 a_ax54. Markup t_ax53 a_ax54 -> Markup t_ax53 a_ax54 pre_ :: forall t_ax50 a_ax51. Markup t_ax50 a_ax51 -> Markup t_ax50 a_ax51 p_ :: forall t_ax4X a_ax4Y. Markup t_ax4X a_ax4Y -> Markup t_ax4X a_ax4Y output_ :: forall t_ax4U a_ax4V. Markup t_ax4U a_ax4V -> Markup t_ax4U a_ax4V option_ :: forall t_ax4R a_ax4S. Markup t_ax4R a_ax4S -> Markup t_ax4R a_ax4S optgroup_ :: forall t_ax4O a_ax4P. Markup t_ax4O a_ax4P -> Markup t_ax4O a_ax4P ol_ :: forall t_ax4L a_ax4M. Markup t_ax4L a_ax4M -> Markup t_ax4L a_ax4M object_ :: forall t_ax4I a_ax4J. Markup t_ax4I a_ax4J -> Markup t_ax4I a_ax4J noscript_ :: forall t_ax4F a_ax4G. Markup t_ax4F a_ax4G -> Markup t_ax4F a_ax4G nav_ :: forall t_ax4C a_ax4D. Markup t_ax4C a_ax4D -> Markup t_ax4C a_ax4D meter_ :: forall t_ax4z a_ax4A. Markup t_ax4z a_ax4A -> Markup t_ax4z a_ax4A menu_ :: forall t_ax4w a_ax4x. Markup t_ax4w a_ax4x -> Markup t_ax4w a_ax4x mark_ :: forall t_ax4t a_ax4u. Markup t_ax4t a_ax4u -> Markup t_ax4t a_ax4u map_ :: forall t_ax4q a_ax4r. Markup t_ax4q a_ax4r -> Markup t_ax4q a_ax4r main_ :: forall t_ax4n a_ax4o. Markup t_ax4n a_ax4o -> Markup t_ax4n a_ax4o li_ :: forall t_ax4k a_ax4l. Markup t_ax4k a_ax4l -> Markup t_ax4k a_ax4l legend_ :: forall t_ax4h a_ax4i. Markup t_ax4h a_ax4i -> Markup t_ax4h a_ax4i label_ :: forall t_ax4e a_ax4f. Markup t_ax4e a_ax4f -> Markup t_ax4e a_ax4f kbd_ :: forall t_ax4b a_ax4c. Markup t_ax4b a_ax4c -> Markup t_ax4b a_ax4c ins_ :: forall t_ax48 a_ax49. Markup t_ax48 a_ax49 -> Markup t_ax48 a_ax49 iframe_ :: forall t_ax45 a_ax46. Markup t_ax45 a_ax46 -> Markup t_ax45 a_ax46 i_ :: forall t_ax42 a_ax43. Markup t_ax42 a_ax43 -> Markup t_ax42 a_ax43 html_ :: forall t_ax3Z a_ax40. Markup t_ax3Z a_ax40 -> Markup t_ax3Z a_ax40 hgroup_ :: forall t_ax3W a_ax3X. Markup t_ax3W a_ax3X -> Markup t_ax3W a_ax3X header_ :: forall t_ax3T a_ax3U. Markup t_ax3T a_ax3U -> Markup t_ax3T a_ax3U head_ :: forall t_ax3Q a_ax3R. Markup t_ax3Q a_ax3R -> Markup t_ax3Q a_ax3R h6_ :: forall t_ax3N a_ax3O. Markup t_ax3N a_ax3O -> Markup t_ax3N a_ax3O h5_ :: forall t_ax3K a_ax3L. Markup t_ax3K a_ax3L -> Markup t_ax3K a_ax3L h4_ :: forall t_ax3H a_ax3I. Markup t_ax3H a_ax3I -> Markup t_ax3H a_ax3I h3_ :: forall t_ax3E a_ax3F. Markup t_ax3E a_ax3F -> Markup t_ax3E a_ax3F h2_ :: forall t_ax3B a_ax3C. Markup t_ax3B a_ax3C -> Markup t_ax3B a_ax3C h1_ :: forall t_ax3y a_ax3z. Markup t_ax3y a_ax3z -> Markup t_ax3y a_ax3z form_ :: forall t_ax3v a_ax3w. Markup t_ax3v a_ax3w -> Markup t_ax3v a_ax3w footer_ :: forall t_ax3s a_ax3t. Markup t_ax3s a_ax3t -> Markup t_ax3s a_ax3t figure_ :: forall t_ax3p a_ax3q. Markup t_ax3p a_ax3q -> Markup t_ax3p a_ax3q figcaption_ :: forall t_ax3m a_ax3n. Markup t_ax3m a_ax3n -> Markup t_ax3m a_ax3n fieldset_ :: forall t_ax3j a_ax3k. Markup t_ax3j a_ax3k -> Markup t_ax3j a_ax3k em_ :: forall t_ax3g a_ax3h. Markup t_ax3g a_ax3h -> Markup t_ax3g a_ax3h dt_ :: forall t_ax3d a_ax3e. Markup t_ax3d a_ax3e -> Markup t_ax3d a_ax3e dl_ :: forall t_ax3a a_ax3b. Markup t_ax3a a_ax3b -> Markup t_ax3a a_ax3b div_ :: forall t_ax37 a_ax38. Markup t_ax37 a_ax38 -> Markup t_ax37 a_ax38 dfn_ :: forall t_ax34 a_ax35. Markup t_ax34 a_ax35 -> Markup t_ax34 a_ax35 details_ :: forall t_ax31 a_ax32. Markup t_ax31 a_ax32 -> Markup t_ax31 a_ax32 del_ :: forall t_ax2Y a_ax2Z. Markup t_ax2Y a_ax2Z -> Markup t_ax2Y a_ax2Z dd_ :: forall t_ax2V a_ax2W. Markup t_ax2V a_ax2W -> Markup t_ax2V a_ax2W datalist_ :: forall t_ax2S a_ax2T. Markup t_ax2S a_ax2T -> Markup t_ax2S a_ax2T command_ :: forall t_ax2P a_ax2Q. Markup t_ax2P a_ax2Q -> Markup t_ax2P a_ax2Q colgroup_ :: forall t_ax2M a_ax2N. Markup t_ax2M a_ax2N -> Markup t_ax2M a_ax2N code_ :: forall t_ax2J a_ax2K. Markup t_ax2J a_ax2K -> Markup t_ax2J a_ax2K cite_ :: forall t_ax2G a_ax2H. Markup t_ax2G a_ax2H -> Markup t_ax2G a_ax2H caption_ :: forall t_ax2D a_ax2E. Markup t_ax2D a_ax2E -> Markup t_ax2D a_ax2E canvas_ :: forall t_ax2A a_ax2B. Markup t_ax2A a_ax2B -> Markup t_ax2A a_ax2B button_ :: forall t_ax2x a_ax2y. Markup t_ax2x a_ax2y -> Markup t_ax2x a_ax2y body_ :: forall t_ax2u a_ax2v. Markup t_ax2u a_ax2v -> Markup t_ax2u a_ax2v blockquote_ :: forall t_ax2r a_ax2s. Markup t_ax2r a_ax2s -> Markup t_ax2r a_ax2s bdo_ :: forall t_ax2o a_ax2p. Markup t_ax2o a_ax2p -> Markup t_ax2o a_ax2p b_ :: forall t_ax2l a_ax2m. Markup t_ax2l a_ax2m -> Markup t_ax2l a_ax2m audio_ :: forall t_ax2i a_ax2j. Markup t_ax2i a_ax2j -> Markup t_ax2i a_ax2j aside_ :: forall t_ax2f a_ax2g. Markup t_ax2f a_ax2g -> Markup t_ax2f a_ax2g article_ :: forall t_ax2c a_ax2d. Markup t_ax2c a_ax2d -> Markup t_ax2c a_ax2d address_ :: forall t_ax29 a_ax2a. Markup t_ax29 a_ax2a -> Markup t_ax29 a_ax2a abbr_ :: forall t_ax26 a_ax27. Markup t_ax26 a_ax27 -> Markup t_ax26 a_ax27 a_ :: forall t_ax23 a_ax24. Markup t_ax23 a_ax24 -> Markup t_ax23 a_ax24 module Text.Html.Nice data Attr a (:=) :: !AttrName -> !Text -> Attr a [attrKey] :: Attr a -> !AttrName [attrVal] :: Attr a -> !Text (:-) :: !AttrName -> a -> Attr a [attrKey] :: Attr a -> !AttrName [attrValHole] :: Attr a -> a data FastMarkup a class Render a m r :: Render a m => a -> m Builder r_ :: Render a Identity => a -> Builder data a (:$) b (:$) :: (FastMarkup (a -> b)) -> a -> (:$) a b -- | Render FastMarkup renderM :: Monad m => (a -> m Builder) -> FastMarkup a -> m Builder -- | Render FastMarkup by recursively rendering any sub-markup. renderMs :: Monad m => (a -> m (FastMarkup Void)) -> FastMarkup a -> m Builder -- | Render FastMarkup that has no holes. render :: FastMarkup Void -> Builder recompile :: FastMarkup a -> FastMarkup a unlayer :: FastMarkup (FastMarkup a) -> FastMarkup a