-- 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.0.0 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 -- | 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 () -- | 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_aC7h. Markup t_aC7h () track_ :: forall t_aC7f. Markup t_aC7f () source_ :: forall t_aC7d. Markup t_aC7d () param_ :: forall t_aC7b. Markup t_aC7b () meta_ :: forall t_aC79. Markup t_aC79 () menuitem_ :: forall t_aC77. Markup t_aC77 () link_ :: forall t_aC75. Markup t_aC75 () keygen_ :: forall t_aC73. Markup t_aC73 () input_ :: forall t_aC71. Markup t_aC71 () img_ :: forall t_aC6Z. Markup t_aC6Z () hr_ :: forall t_aC6X. Markup t_aC6X () embed_ :: forall t_aC6V. Markup t_aC6V () col_ :: forall t_aC6T. Markup t_aC6T () br_ :: forall t_aC6R. Markup t_aC6R () base_ :: forall t_aC6P. Markup t_aC6P () area_ :: forall t_aC6N. Markup t_aC6N () video_ :: forall t_aC6K a_aC6L. Markup t_aC6K a_aC6L -> Markup t_aC6K a_aC6L var_ :: forall t_aC6H a_aC6I. Markup t_aC6H a_aC6I -> Markup t_aC6H a_aC6I ul_ :: forall t_aC6E a_aC6F. Markup t_aC6E a_aC6F -> Markup t_aC6E a_aC6F tr_ :: forall t_aC6B a_aC6C. Markup t_aC6B a_aC6C -> Markup t_aC6B a_aC6C title_ :: forall t_aC6y a_aC6z. Markup t_aC6y a_aC6z -> Markup t_aC6y a_aC6z time_ :: forall t_aC6v a_aC6w. Markup t_aC6v a_aC6w -> Markup t_aC6v a_aC6w thead_ :: forall t_aC6s a_aC6t. Markup t_aC6s a_aC6t -> Markup t_aC6s a_aC6t th_ :: forall t_aC6p a_aC6q. Markup t_aC6p a_aC6q -> Markup t_aC6p a_aC6q tfoot_ :: forall t_aC6m a_aC6n. Markup t_aC6m a_aC6n -> Markup t_aC6m a_aC6n textarea_ :: forall t_aC6j a_aC6k. Markup t_aC6j a_aC6k -> Markup t_aC6j a_aC6k td_ :: forall t_aC6g a_aC6h. Markup t_aC6g a_aC6h -> Markup t_aC6g a_aC6h tbody_ :: forall t_aC6d a_aC6e. Markup t_aC6d a_aC6e -> Markup t_aC6d a_aC6e table_ :: forall t_aC6a a_aC6b. Markup t_aC6a a_aC6b -> Markup t_aC6a a_aC6b sup_ :: forall t_aC67 a_aC68. Markup t_aC67 a_aC68 -> Markup t_aC67 a_aC68 summary_ :: forall t_aC64 a_aC65. Markup t_aC64 a_aC65 -> Markup t_aC64 a_aC65 sub_ :: forall t_aC61 a_aC62. Markup t_aC61 a_aC62 -> Markup t_aC61 a_aC62 style_ :: forall t_aC5Y a_aC5Z. Markup t_aC5Y a_aC5Z -> Markup t_aC5Y a_aC5Z strong_ :: forall t_aC5V a_aC5W. Markup t_aC5V a_aC5W -> Markup t_aC5V a_aC5W span_ :: forall t_aC5S a_aC5T. Markup t_aC5S a_aC5T -> Markup t_aC5S a_aC5T small_ :: forall t_aC5P a_aC5Q. Markup t_aC5P a_aC5Q -> Markup t_aC5P a_aC5Q select_ :: forall t_aC5M a_aC5N. Markup t_aC5M a_aC5N -> Markup t_aC5M a_aC5N section_ :: forall t_aC5J a_aC5K. Markup t_aC5J a_aC5K -> Markup t_aC5J a_aC5K script_ :: forall t_aC5G a_aC5H. Markup t_aC5G a_aC5H -> Markup t_aC5G a_aC5H samp_ :: forall t_aC5D a_aC5E. Markup t_aC5D a_aC5E -> Markup t_aC5D a_aC5E ruby_ :: forall t_aC5A a_aC5B. Markup t_aC5A a_aC5B -> Markup t_aC5A a_aC5B rt_ :: forall t_aC5x a_aC5y. Markup t_aC5x a_aC5y -> Markup t_aC5x a_aC5y rp_ :: forall t_aC5u a_aC5v. Markup t_aC5u a_aC5v -> Markup t_aC5u a_aC5v q_ :: forall t_aC5r a_aC5s. Markup t_aC5r a_aC5s -> Markup t_aC5r a_aC5s progress_ :: forall t_aC5o a_aC5p. Markup t_aC5o a_aC5p -> Markup t_aC5o a_aC5p pre_ :: forall t_aC5l a_aC5m. Markup t_aC5l a_aC5m -> Markup t_aC5l a_aC5m p_ :: forall t_aC5i a_aC5j. Markup t_aC5i a_aC5j -> Markup t_aC5i a_aC5j output_ :: forall t_aC5f a_aC5g. Markup t_aC5f a_aC5g -> Markup t_aC5f a_aC5g option_ :: forall t_aC5c a_aC5d. Markup t_aC5c a_aC5d -> Markup t_aC5c a_aC5d optgroup_ :: forall t_aC59 a_aC5a. Markup t_aC59 a_aC5a -> Markup t_aC59 a_aC5a ol_ :: forall t_aC56 a_aC57. Markup t_aC56 a_aC57 -> Markup t_aC56 a_aC57 object_ :: forall t_aC53 a_aC54. Markup t_aC53 a_aC54 -> Markup t_aC53 a_aC54 noscript_ :: forall t_aC50 a_aC51. Markup t_aC50 a_aC51 -> Markup t_aC50 a_aC51 nav_ :: forall t_aC4X a_aC4Y. Markup t_aC4X a_aC4Y -> Markup t_aC4X a_aC4Y meter_ :: forall t_aC4U a_aC4V. Markup t_aC4U a_aC4V -> Markup t_aC4U a_aC4V menu_ :: forall t_aC4R a_aC4S. Markup t_aC4R a_aC4S -> Markup t_aC4R a_aC4S mark_ :: forall t_aC4O a_aC4P. Markup t_aC4O a_aC4P -> Markup t_aC4O a_aC4P map_ :: forall t_aC4L a_aC4M. Markup t_aC4L a_aC4M -> Markup t_aC4L a_aC4M main_ :: forall t_aC4I a_aC4J. Markup t_aC4I a_aC4J -> Markup t_aC4I a_aC4J li_ :: forall t_aC4F a_aC4G. Markup t_aC4F a_aC4G -> Markup t_aC4F a_aC4G legend_ :: forall t_aC4C a_aC4D. Markup t_aC4C a_aC4D -> Markup t_aC4C a_aC4D label_ :: forall t_aC4z a_aC4A. Markup t_aC4z a_aC4A -> Markup t_aC4z a_aC4A kbd_ :: forall t_aC4w a_aC4x. Markup t_aC4w a_aC4x -> Markup t_aC4w a_aC4x ins_ :: forall t_aC4t a_aC4u. Markup t_aC4t a_aC4u -> Markup t_aC4t a_aC4u iframe_ :: forall t_aC4q a_aC4r. Markup t_aC4q a_aC4r -> Markup t_aC4q a_aC4r i_ :: forall t_aC4n a_aC4o. Markup t_aC4n a_aC4o -> Markup t_aC4n a_aC4o html_ :: forall t_aC4k a_aC4l. Markup t_aC4k a_aC4l -> Markup t_aC4k a_aC4l hgroup_ :: forall t_aC4h a_aC4i. Markup t_aC4h a_aC4i -> Markup t_aC4h a_aC4i header_ :: forall t_aC4e a_aC4f. Markup t_aC4e a_aC4f -> Markup t_aC4e a_aC4f head_ :: forall t_aC4b a_aC4c. Markup t_aC4b a_aC4c -> Markup t_aC4b a_aC4c h6_ :: forall t_aC48 a_aC49. Markup t_aC48 a_aC49 -> Markup t_aC48 a_aC49 h5_ :: forall t_aC45 a_aC46. Markup t_aC45 a_aC46 -> Markup t_aC45 a_aC46 h4_ :: forall t_aC42 a_aC43. Markup t_aC42 a_aC43 -> Markup t_aC42 a_aC43 h3_ :: forall t_aC3Z a_aC40. Markup t_aC3Z a_aC40 -> Markup t_aC3Z a_aC40 h2_ :: forall t_aC3W a_aC3X. Markup t_aC3W a_aC3X -> Markup t_aC3W a_aC3X h1_ :: forall t_aC3T a_aC3U. Markup t_aC3T a_aC3U -> Markup t_aC3T a_aC3U form_ :: forall t_aC3Q a_aC3R. Markup t_aC3Q a_aC3R -> Markup t_aC3Q a_aC3R footer_ :: forall t_aC3N a_aC3O. Markup t_aC3N a_aC3O -> Markup t_aC3N a_aC3O figure_ :: forall t_aC3K a_aC3L. Markup t_aC3K a_aC3L -> Markup t_aC3K a_aC3L figcaption_ :: forall t_aC3H a_aC3I. Markup t_aC3H a_aC3I -> Markup t_aC3H a_aC3I fieldset_ :: forall t_aC3E a_aC3F. Markup t_aC3E a_aC3F -> Markup t_aC3E a_aC3F em_ :: forall t_aC3B a_aC3C. Markup t_aC3B a_aC3C -> Markup t_aC3B a_aC3C dt_ :: forall t_aC3y a_aC3z. Markup t_aC3y a_aC3z -> Markup t_aC3y a_aC3z dl_ :: forall t_aC3v a_aC3w. Markup t_aC3v a_aC3w -> Markup t_aC3v a_aC3w div_ :: forall t_aC3s a_aC3t. Markup t_aC3s a_aC3t -> Markup t_aC3s a_aC3t dfn_ :: forall t_aC3p a_aC3q. Markup t_aC3p a_aC3q -> Markup t_aC3p a_aC3q details_ :: forall t_aC3m a_aC3n. Markup t_aC3m a_aC3n -> Markup t_aC3m a_aC3n del_ :: forall t_aC3j a_aC3k. Markup t_aC3j a_aC3k -> Markup t_aC3j a_aC3k dd_ :: forall t_aC3g a_aC3h. Markup t_aC3g a_aC3h -> Markup t_aC3g a_aC3h datalist_ :: forall t_aC3d a_aC3e. Markup t_aC3d a_aC3e -> Markup t_aC3d a_aC3e command_ :: forall t_aC3a a_aC3b. Markup t_aC3a a_aC3b -> Markup t_aC3a a_aC3b colgroup_ :: forall t_aC37 a_aC38. Markup t_aC37 a_aC38 -> Markup t_aC37 a_aC38 code_ :: forall t_aC34 a_aC35. Markup t_aC34 a_aC35 -> Markup t_aC34 a_aC35 cite_ :: forall t_aC31 a_aC32. Markup t_aC31 a_aC32 -> Markup t_aC31 a_aC32 caption_ :: forall t_aC2Y a_aC2Z. Markup t_aC2Y a_aC2Z -> Markup t_aC2Y a_aC2Z canvas_ :: forall t_aC2V a_aC2W. Markup t_aC2V a_aC2W -> Markup t_aC2V a_aC2W button_ :: forall t_aC2S a_aC2T. Markup t_aC2S a_aC2T -> Markup t_aC2S a_aC2T body_ :: forall t_aC2P a_aC2Q. Markup t_aC2P a_aC2Q -> Markup t_aC2P a_aC2Q blockquote_ :: forall t_aC2M a_aC2N. Markup t_aC2M a_aC2N -> Markup t_aC2M a_aC2N bdo_ :: forall t_aC2J a_aC2K. Markup t_aC2J a_aC2K -> Markup t_aC2J a_aC2K b_ :: forall t_aC2G a_aC2H. Markup t_aC2G a_aC2H -> Markup t_aC2G a_aC2H audio_ :: forall t_aC2D a_aC2E. Markup t_aC2D a_aC2E -> Markup t_aC2D a_aC2E aside_ :: forall t_aC2A a_aC2B. Markup t_aC2A a_aC2B -> Markup t_aC2A a_aC2B article_ :: forall t_aC2x a_aC2y. Markup t_aC2x a_aC2y -> Markup t_aC2x a_aC2y address_ :: forall t_aC2u a_aC2v. Markup t_aC2u a_aC2v -> Markup t_aC2u a_aC2v abbr_ :: forall t_aC2r a_aC2s. Markup t_aC2r a_aC2s -> Markup t_aC2r a_aC2s a_ :: forall t_aC2o a_aC2p. Markup t_aC2o a_aC2p -> Markup t_aC2o a_aC2p -- | 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