-- 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.1.2 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 Empty :: Markup' a data Stream a ListS :: [s] -> (s -> FastMarkup a) -> Stream a S :: !s -> !(s -> Next s t) -> !(t -> FastMarkup a) -> Stream a -- | Don't use this! It's a lie! unstream :: (FastMarkup a -> b) -> Stream a -> (b -> c -> c) -> c -> c data Next s a Next :: !s -> !a -> Next s a Done :: !a -> Next s a data (:$) a b (:$) :: (FastMarkup (a -> b)) -> a -> (:$) a b data FastMarkup a Bunch :: {-# UNPACK #-} !(Vector (FastMarkup a)) -> FastMarkup a FStream :: (Stream a) -> FastMarkup a FLText :: Text -> FastMarkup a FSText :: {-# UNPACK #-} !Text -> FastMarkup a FBuilder :: !Builder -> FastMarkup a FHole :: !IsEscaped -> !a -> FastMarkup a FEmpty :: FastMarkup a data Markup'F (a_aeRo :: Type) r_ahcl DoctypeF :: Markup'F r_ahcl NodeF :: !Text -> !(Vector (Attr a_aeRo)) -> r_ahcl -> Markup'F r_ahcl VoidNodeF :: !Text -> !(Vector (Attr a_aeRo)) -> Markup'F r_ahcl ListF :: [r_ahcl] -> Markup'F r_ahcl StreamF :: (Stream a_aeRo) -> Markup'F r_ahcl TextF :: !IsEscaped -> !SomeText -> Markup'F r_ahcl HoleF :: !IsEscaped -> a_aeRo -> Markup'F r_ahcl EmptyF :: Markup'F r_ahcl -- | 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) data EqHack a EqHack :: {-# UNPACK #-} !Int -> a -> EqHack a -- | Tag everything in a Traversable with a number eqHack :: Traversable f => f a -> f (EqHack 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 -- | 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 class Render a m r :: Render a m => a -> m Builder -- | Defer application of an argument to rendering instance Data.Bifunctor.Bifunctor Text.Html.Nice.Internal.Markup'F instance GHC.Classes.Eq (Text.Html.Nice.Internal.EqHack a) 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 (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.Traversable.Traversable (Text.Html.Nice.Internal.Markup'F a0) instance Data.Foldable.Foldable (Text.Html.Nice.Internal.Markup'F a0) instance GHC.Base.Functor (Text.Html.Nice.Internal.Markup'F a0) instance Data.Functor.Foldable.Recursive (Text.Html.Nice.Internal.Markup' a0) instance Data.Functor.Foldable.Corecursive (Text.Html.Nice.Internal.Markup' a0) instance Data.Traversable.Traversable Text.Html.Nice.Internal.Markup' 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.Traversable.Traversable Text.Html.Nice.Internal.FastMarkup 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 Data.Traversable.Traversable (Text.Html.Nice.Internal.Next s) instance Data.Foldable.Foldable (Text.Html.Nice.Internal.Next s) instance GHC.Base.Functor (Text.Html.Nice.Internal.Next s) instance (GHC.Classes.Eq a, GHC.Classes.Eq s) => GHC.Classes.Eq (Text.Html.Nice.Internal.Next s a) instance (GHC.Show.Show a, GHC.Show.Show s) => GHC.Show.Show (Text.Html.Nice.Internal.Next s 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 (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 (Text.Html.Nice.Internal.Stream a) instance Data.Traversable.Traversable Text.Html.Nice.Internal.Stream instance GHC.Show.Show a => GHC.Show.Show (a Text.Html.Nice.Internal.:$ b) instance GHC.Base.Monoid (Text.Html.Nice.Internal.FastMarkup a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Text.Html.Nice.Internal.FastMarkup a) 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 () -- | Add some attributes (!) :: (Markup t a -> Markup t b) -> [Attr t] -> Markup t a -> Markup t b infixl 8 ! dynamic :: p -> Markup p () dynamicRaw :: p -> Markup p () -- | Sub-template sub :: Markup n a -> Markup (FastMarkup n) a 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 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_aCaY. Markup t_aCaY () track_ :: forall t_aCaW. Markup t_aCaW () source_ :: forall t_aCaU. Markup t_aCaU () param_ :: forall t_aCaS. Markup t_aCaS () meta_ :: forall t_aCaQ. Markup t_aCaQ () menuitem_ :: forall t_aCaO. Markup t_aCaO () link_ :: forall t_aCaM. Markup t_aCaM () keygen_ :: forall t_aCaK. Markup t_aCaK () input_ :: forall t_aCaI. Markup t_aCaI () img_ :: forall t_aCaG. Markup t_aCaG () hr_ :: forall t_aCaE. Markup t_aCaE () embed_ :: forall t_aCaC. Markup t_aCaC () col_ :: forall t_aCaA. Markup t_aCaA () br_ :: forall t_aCay. Markup t_aCay () base_ :: forall t_aCaw. Markup t_aCaw () area_ :: forall t_aCau. Markup t_aCau () video_ :: forall t_aCar a_aCas. Markup t_aCar a_aCas -> Markup t_aCar a_aCas var_ :: forall t_aCao a_aCap. Markup t_aCao a_aCap -> Markup t_aCao a_aCap ul_ :: forall t_aCal a_aCam. Markup t_aCal a_aCam -> Markup t_aCal a_aCam tr_ :: forall t_aCai a_aCaj. Markup t_aCai a_aCaj -> Markup t_aCai a_aCaj title_ :: forall t_aCaf a_aCag. Markup t_aCaf a_aCag -> Markup t_aCaf a_aCag time_ :: forall t_aCac a_aCad. Markup t_aCac a_aCad -> Markup t_aCac a_aCad thead_ :: forall t_aCa9 a_aCaa. Markup t_aCa9 a_aCaa -> Markup t_aCa9 a_aCaa th_ :: forall t_aCa6 a_aCa7. Markup t_aCa6 a_aCa7 -> Markup t_aCa6 a_aCa7 tfoot_ :: forall t_aCa3 a_aCa4. Markup t_aCa3 a_aCa4 -> Markup t_aCa3 a_aCa4 textarea_ :: forall t_aCa0 a_aCa1. Markup t_aCa0 a_aCa1 -> Markup t_aCa0 a_aCa1 td_ :: forall t_aC9X a_aC9Y. Markup t_aC9X a_aC9Y -> Markup t_aC9X a_aC9Y tbody_ :: forall t_aC9U a_aC9V. Markup t_aC9U a_aC9V -> Markup t_aC9U a_aC9V table_ :: forall t_aC9R a_aC9S. Markup t_aC9R a_aC9S -> Markup t_aC9R a_aC9S sup_ :: forall t_aC9O a_aC9P. Markup t_aC9O a_aC9P -> Markup t_aC9O a_aC9P summary_ :: forall t_aC9L a_aC9M. Markup t_aC9L a_aC9M -> Markup t_aC9L a_aC9M sub_ :: forall t_aC9I a_aC9J. Markup t_aC9I a_aC9J -> Markup t_aC9I a_aC9J style_ :: forall t_aC9F a_aC9G. Markup t_aC9F a_aC9G -> Markup t_aC9F a_aC9G strong_ :: forall t_aC9C a_aC9D. Markup t_aC9C a_aC9D -> Markup t_aC9C a_aC9D span_ :: forall t_aC9z a_aC9A. Markup t_aC9z a_aC9A -> Markup t_aC9z a_aC9A small_ :: forall t_aC9w a_aC9x. Markup t_aC9w a_aC9x -> Markup t_aC9w a_aC9x select_ :: forall t_aC9t a_aC9u. Markup t_aC9t a_aC9u -> Markup t_aC9t a_aC9u section_ :: forall t_aC9q a_aC9r. Markup t_aC9q a_aC9r -> Markup t_aC9q a_aC9r script_ :: forall t_aC9n a_aC9o. Markup t_aC9n a_aC9o -> Markup t_aC9n a_aC9o samp_ :: forall t_aC9k a_aC9l. Markup t_aC9k a_aC9l -> Markup t_aC9k a_aC9l ruby_ :: forall t_aC9h a_aC9i. Markup t_aC9h a_aC9i -> Markup t_aC9h a_aC9i rt_ :: forall t_aC9e a_aC9f. Markup t_aC9e a_aC9f -> Markup t_aC9e a_aC9f rp_ :: forall t_aC9b a_aC9c. Markup t_aC9b a_aC9c -> Markup t_aC9b a_aC9c q_ :: forall t_aC98 a_aC99. Markup t_aC98 a_aC99 -> Markup t_aC98 a_aC99 progress_ :: forall t_aC95 a_aC96. Markup t_aC95 a_aC96 -> Markup t_aC95 a_aC96 pre_ :: forall t_aC92 a_aC93. Markup t_aC92 a_aC93 -> Markup t_aC92 a_aC93 p_ :: forall t_aC8Z a_aC90. Markup t_aC8Z a_aC90 -> Markup t_aC8Z a_aC90 output_ :: forall t_aC8W a_aC8X. Markup t_aC8W a_aC8X -> Markup t_aC8W a_aC8X option_ :: forall t_aC8T a_aC8U. Markup t_aC8T a_aC8U -> Markup t_aC8T a_aC8U optgroup_ :: forall t_aC8Q a_aC8R. Markup t_aC8Q a_aC8R -> Markup t_aC8Q a_aC8R ol_ :: forall t_aC8N a_aC8O. Markup t_aC8N a_aC8O -> Markup t_aC8N a_aC8O object_ :: forall t_aC8K a_aC8L. Markup t_aC8K a_aC8L -> Markup t_aC8K a_aC8L noscript_ :: forall t_aC8H a_aC8I. Markup t_aC8H a_aC8I -> Markup t_aC8H a_aC8I nav_ :: forall t_aC8E a_aC8F. Markup t_aC8E a_aC8F -> Markup t_aC8E a_aC8F meter_ :: forall t_aC8B a_aC8C. Markup t_aC8B a_aC8C -> Markup t_aC8B a_aC8C menu_ :: forall t_aC8y a_aC8z. Markup t_aC8y a_aC8z -> Markup t_aC8y a_aC8z mark_ :: forall t_aC8v a_aC8w. Markup t_aC8v a_aC8w -> Markup t_aC8v a_aC8w map_ :: forall t_aC8s a_aC8t. Markup t_aC8s a_aC8t -> Markup t_aC8s a_aC8t main_ :: forall t_aC8p a_aC8q. Markup t_aC8p a_aC8q -> Markup t_aC8p a_aC8q li_ :: forall t_aC8m a_aC8n. Markup t_aC8m a_aC8n -> Markup t_aC8m a_aC8n legend_ :: forall t_aC8j a_aC8k. Markup t_aC8j a_aC8k -> Markup t_aC8j a_aC8k label_ :: forall t_aC8g a_aC8h. Markup t_aC8g a_aC8h -> Markup t_aC8g a_aC8h kbd_ :: forall t_aC8d a_aC8e. Markup t_aC8d a_aC8e -> Markup t_aC8d a_aC8e ins_ :: forall t_aC8a a_aC8b. Markup t_aC8a a_aC8b -> Markup t_aC8a a_aC8b iframe_ :: forall t_aC87 a_aC88. Markup t_aC87 a_aC88 -> Markup t_aC87 a_aC88 i_ :: forall t_aC84 a_aC85. Markup t_aC84 a_aC85 -> Markup t_aC84 a_aC85 html_ :: forall t_aC81 a_aC82. Markup t_aC81 a_aC82 -> Markup t_aC81 a_aC82 hgroup_ :: forall t_aC7Y a_aC7Z. Markup t_aC7Y a_aC7Z -> Markup t_aC7Y a_aC7Z header_ :: forall t_aC7V a_aC7W. Markup t_aC7V a_aC7W -> Markup t_aC7V a_aC7W head_ :: forall t_aC7S a_aC7T. Markup t_aC7S a_aC7T -> Markup t_aC7S a_aC7T h6_ :: forall t_aC7P a_aC7Q. Markup t_aC7P a_aC7Q -> Markup t_aC7P a_aC7Q h5_ :: forall t_aC7M a_aC7N. Markup t_aC7M a_aC7N -> Markup t_aC7M a_aC7N h4_ :: forall t_aC7J a_aC7K. Markup t_aC7J a_aC7K -> Markup t_aC7J a_aC7K h3_ :: forall t_aC7G a_aC7H. Markup t_aC7G a_aC7H -> Markup t_aC7G a_aC7H h2_ :: forall t_aC7D a_aC7E. Markup t_aC7D a_aC7E -> Markup t_aC7D a_aC7E h1_ :: forall t_aC7A a_aC7B. Markup t_aC7A a_aC7B -> Markup t_aC7A a_aC7B form_ :: forall t_aC7x a_aC7y. Markup t_aC7x a_aC7y -> Markup t_aC7x a_aC7y footer_ :: forall t_aC7u a_aC7v. Markup t_aC7u a_aC7v -> Markup t_aC7u a_aC7v figure_ :: forall t_aC7r a_aC7s. Markup t_aC7r a_aC7s -> Markup t_aC7r a_aC7s figcaption_ :: forall t_aC7o a_aC7p. Markup t_aC7o a_aC7p -> Markup t_aC7o a_aC7p fieldset_ :: forall t_aC7l a_aC7m. Markup t_aC7l a_aC7m -> Markup t_aC7l a_aC7m em_ :: forall t_aC7i a_aC7j. Markup t_aC7i a_aC7j -> Markup t_aC7i a_aC7j dt_ :: forall t_aC7f a_aC7g. Markup t_aC7f a_aC7g -> Markup t_aC7f a_aC7g dl_ :: forall t_aC7c a_aC7d. Markup t_aC7c a_aC7d -> Markup t_aC7c a_aC7d div_ :: forall t_aC79 a_aC7a. Markup t_aC79 a_aC7a -> Markup t_aC79 a_aC7a dfn_ :: forall t_aC76 a_aC77. Markup t_aC76 a_aC77 -> Markup t_aC76 a_aC77 details_ :: forall t_aC73 a_aC74. Markup t_aC73 a_aC74 -> Markup t_aC73 a_aC74 del_ :: forall t_aC70 a_aC71. Markup t_aC70 a_aC71 -> Markup t_aC70 a_aC71 dd_ :: forall t_aC6X a_aC6Y. Markup t_aC6X a_aC6Y -> Markup t_aC6X a_aC6Y datalist_ :: forall t_aC6U a_aC6V. Markup t_aC6U a_aC6V -> Markup t_aC6U a_aC6V command_ :: forall t_aC6R a_aC6S. Markup t_aC6R a_aC6S -> Markup t_aC6R a_aC6S colgroup_ :: forall t_aC6O a_aC6P. Markup t_aC6O a_aC6P -> Markup t_aC6O a_aC6P code_ :: forall t_aC6L a_aC6M. Markup t_aC6L a_aC6M -> Markup t_aC6L a_aC6M cite_ :: forall t_aC6I a_aC6J. Markup t_aC6I a_aC6J -> Markup t_aC6I a_aC6J caption_ :: forall t_aC6F a_aC6G. Markup t_aC6F a_aC6G -> Markup t_aC6F a_aC6G canvas_ :: forall t_aC6C a_aC6D. Markup t_aC6C a_aC6D -> Markup t_aC6C a_aC6D button_ :: forall t_aC6z a_aC6A. Markup t_aC6z a_aC6A -> Markup t_aC6z a_aC6A body_ :: forall t_aC6w a_aC6x. Markup t_aC6w a_aC6x -> Markup t_aC6w a_aC6x blockquote_ :: forall t_aC6t a_aC6u. Markup t_aC6t a_aC6u -> Markup t_aC6t a_aC6u bdo_ :: forall t_aC6q a_aC6r. Markup t_aC6q a_aC6r -> Markup t_aC6q a_aC6r b_ :: forall t_aC6n a_aC6o. Markup t_aC6n a_aC6o -> Markup t_aC6n a_aC6o audio_ :: forall t_aC6k a_aC6l. Markup t_aC6k a_aC6l -> Markup t_aC6k a_aC6l aside_ :: forall t_aC6h a_aC6i. Markup t_aC6h a_aC6i -> Markup t_aC6h a_aC6i article_ :: forall t_aC6e a_aC6f. Markup t_aC6e a_aC6f -> Markup t_aC6e a_aC6f address_ :: forall t_aC6b a_aC6c. Markup t_aC6b a_aC6c -> Markup t_aC6b a_aC6c abbr_ :: forall t_aC68 a_aC69. Markup t_aC68 a_aC69 -> Markup t_aC68 a_aC69 a_ :: forall t_aC65 a_aC66. Markup t_aC65 a_aC66 -> Markup t_aC65 a_aC66 -- | 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. -- --
-- ("foo" :: Markup n a) = text "foo"
--
--
-- -- ([a,b,c] :: Markup n a) = nodes [a,b,c] ---- --
-- (#foo :: Markup n a) = node "foo" [] ---- --
-- 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 -- --
toLazyText (fromText t) = fromChunks -- [t]
toLazyText (fromString s) = fromChunks -- [S.pack s]
toLazyText (fromLazyText t) = t