-- 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.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 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 () 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_aC9U. Markup t_aC9U () track_ :: forall t_aC9S. Markup t_aC9S () source_ :: forall t_aC9Q. Markup t_aC9Q () param_ :: forall t_aC9O. Markup t_aC9O () meta_ :: forall t_aC9M. Markup t_aC9M () menuitem_ :: forall t_aC9K. Markup t_aC9K () link_ :: forall t_aC9I. Markup t_aC9I () keygen_ :: forall t_aC9G. Markup t_aC9G () input_ :: forall t_aC9E. Markup t_aC9E () img_ :: forall t_aC9C. Markup t_aC9C () hr_ :: forall t_aC9A. Markup t_aC9A () embed_ :: forall t_aC9y. Markup t_aC9y () col_ :: forall t_aC9w. Markup t_aC9w () br_ :: forall t_aC9u. Markup t_aC9u () base_ :: forall t_aC9s. Markup t_aC9s () area_ :: forall t_aC9q. Markup t_aC9q () video_ :: forall t_aC9n a_aC9o. Markup t_aC9n a_aC9o -> Markup t_aC9n a_aC9o var_ :: forall t_aC9k a_aC9l. Markup t_aC9k a_aC9l -> Markup t_aC9k a_aC9l ul_ :: forall t_aC9h a_aC9i. Markup t_aC9h a_aC9i -> Markup t_aC9h a_aC9i tr_ :: forall t_aC9e a_aC9f. Markup t_aC9e a_aC9f -> Markup t_aC9e a_aC9f title_ :: forall t_aC9b a_aC9c. Markup t_aC9b a_aC9c -> Markup t_aC9b a_aC9c time_ :: forall t_aC98 a_aC99. Markup t_aC98 a_aC99 -> Markup t_aC98 a_aC99 thead_ :: forall t_aC95 a_aC96. Markup t_aC95 a_aC96 -> Markup t_aC95 a_aC96 th_ :: forall t_aC92 a_aC93. Markup t_aC92 a_aC93 -> Markup t_aC92 a_aC93 tfoot_ :: forall t_aC8Z a_aC90. Markup t_aC8Z a_aC90 -> Markup t_aC8Z a_aC90 textarea_ :: forall t_aC8W a_aC8X. Markup t_aC8W a_aC8X -> Markup t_aC8W a_aC8X td_ :: forall t_aC8T a_aC8U. Markup t_aC8T a_aC8U -> Markup t_aC8T a_aC8U tbody_ :: forall t_aC8Q a_aC8R. Markup t_aC8Q a_aC8R -> Markup t_aC8Q a_aC8R table_ :: forall t_aC8N a_aC8O. Markup t_aC8N a_aC8O -> Markup t_aC8N a_aC8O sup_ :: forall t_aC8K a_aC8L. Markup t_aC8K a_aC8L -> Markup t_aC8K a_aC8L summary_ :: forall t_aC8H a_aC8I. Markup t_aC8H a_aC8I -> Markup t_aC8H a_aC8I sub_ :: forall t_aC8E a_aC8F. Markup t_aC8E a_aC8F -> Markup t_aC8E a_aC8F style_ :: forall t_aC8B a_aC8C. Markup t_aC8B a_aC8C -> Markup t_aC8B a_aC8C strong_ :: forall t_aC8y a_aC8z. Markup t_aC8y a_aC8z -> Markup t_aC8y a_aC8z span_ :: forall t_aC8v a_aC8w. Markup t_aC8v a_aC8w -> Markup t_aC8v a_aC8w small_ :: forall t_aC8s a_aC8t. Markup t_aC8s a_aC8t -> Markup t_aC8s a_aC8t select_ :: forall t_aC8p a_aC8q. Markup t_aC8p a_aC8q -> Markup t_aC8p a_aC8q section_ :: forall t_aC8m a_aC8n. Markup t_aC8m a_aC8n -> Markup t_aC8m a_aC8n script_ :: forall t_aC8j a_aC8k. Markup t_aC8j a_aC8k -> Markup t_aC8j a_aC8k samp_ :: forall t_aC8g a_aC8h. Markup t_aC8g a_aC8h -> Markup t_aC8g a_aC8h ruby_ :: forall t_aC8d a_aC8e. Markup t_aC8d a_aC8e -> Markup t_aC8d a_aC8e rt_ :: forall t_aC8a a_aC8b. Markup t_aC8a a_aC8b -> Markup t_aC8a a_aC8b rp_ :: forall t_aC87 a_aC88. Markup t_aC87 a_aC88 -> Markup t_aC87 a_aC88 q_ :: forall t_aC84 a_aC85. Markup t_aC84 a_aC85 -> Markup t_aC84 a_aC85 progress_ :: forall t_aC81 a_aC82. Markup t_aC81 a_aC82 -> Markup t_aC81 a_aC82 pre_ :: forall t_aC7Y a_aC7Z. Markup t_aC7Y a_aC7Z -> Markup t_aC7Y a_aC7Z p_ :: forall t_aC7V a_aC7W. Markup t_aC7V a_aC7W -> Markup t_aC7V a_aC7W output_ :: forall t_aC7S a_aC7T. Markup t_aC7S a_aC7T -> Markup t_aC7S a_aC7T option_ :: forall t_aC7P a_aC7Q. Markup t_aC7P a_aC7Q -> Markup t_aC7P a_aC7Q optgroup_ :: forall t_aC7M a_aC7N. Markup t_aC7M a_aC7N -> Markup t_aC7M a_aC7N ol_ :: forall t_aC7J a_aC7K. Markup t_aC7J a_aC7K -> Markup t_aC7J a_aC7K object_ :: forall t_aC7G a_aC7H. Markup t_aC7G a_aC7H -> Markup t_aC7G a_aC7H noscript_ :: forall t_aC7D a_aC7E. Markup t_aC7D a_aC7E -> Markup t_aC7D a_aC7E nav_ :: forall t_aC7A a_aC7B. Markup t_aC7A a_aC7B -> Markup t_aC7A a_aC7B meter_ :: forall t_aC7x a_aC7y. Markup t_aC7x a_aC7y -> Markup t_aC7x a_aC7y menu_ :: forall t_aC7u a_aC7v. Markup t_aC7u a_aC7v -> Markup t_aC7u a_aC7v mark_ :: forall t_aC7r a_aC7s. Markup t_aC7r a_aC7s -> Markup t_aC7r a_aC7s map_ :: forall t_aC7o a_aC7p. Markup t_aC7o a_aC7p -> Markup t_aC7o a_aC7p main_ :: forall t_aC7l a_aC7m. Markup t_aC7l a_aC7m -> Markup t_aC7l a_aC7m li_ :: forall t_aC7i a_aC7j. Markup t_aC7i a_aC7j -> Markup t_aC7i a_aC7j legend_ :: forall t_aC7f a_aC7g. Markup t_aC7f a_aC7g -> Markup t_aC7f a_aC7g label_ :: forall t_aC7c a_aC7d. Markup t_aC7c a_aC7d -> Markup t_aC7c a_aC7d kbd_ :: forall t_aC79 a_aC7a. Markup t_aC79 a_aC7a -> Markup t_aC79 a_aC7a ins_ :: forall t_aC76 a_aC77. Markup t_aC76 a_aC77 -> Markup t_aC76 a_aC77 iframe_ :: forall t_aC73 a_aC74. Markup t_aC73 a_aC74 -> Markup t_aC73 a_aC74 i_ :: forall t_aC70 a_aC71. Markup t_aC70 a_aC71 -> Markup t_aC70 a_aC71 html_ :: forall t_aC6X a_aC6Y. Markup t_aC6X a_aC6Y -> Markup t_aC6X a_aC6Y hgroup_ :: forall t_aC6U a_aC6V. Markup t_aC6U a_aC6V -> Markup t_aC6U a_aC6V header_ :: forall t_aC6R a_aC6S. Markup t_aC6R a_aC6S -> Markup t_aC6R a_aC6S head_ :: forall t_aC6O a_aC6P. Markup t_aC6O a_aC6P -> Markup t_aC6O a_aC6P h6_ :: forall t_aC6L a_aC6M. Markup t_aC6L a_aC6M -> Markup t_aC6L a_aC6M h5_ :: forall t_aC6I a_aC6J. Markup t_aC6I a_aC6J -> Markup t_aC6I a_aC6J h4_ :: forall t_aC6F a_aC6G. Markup t_aC6F a_aC6G -> Markup t_aC6F a_aC6G h3_ :: forall t_aC6C a_aC6D. Markup t_aC6C a_aC6D -> Markup t_aC6C a_aC6D h2_ :: forall t_aC6z a_aC6A. Markup t_aC6z a_aC6A -> Markup t_aC6z a_aC6A h1_ :: forall t_aC6w a_aC6x. Markup t_aC6w a_aC6x -> Markup t_aC6w a_aC6x form_ :: forall t_aC6t a_aC6u. Markup t_aC6t a_aC6u -> Markup t_aC6t a_aC6u footer_ :: forall t_aC6q a_aC6r. Markup t_aC6q a_aC6r -> Markup t_aC6q a_aC6r figure_ :: forall t_aC6n a_aC6o. Markup t_aC6n a_aC6o -> Markup t_aC6n a_aC6o figcaption_ :: forall t_aC6k a_aC6l. Markup t_aC6k a_aC6l -> Markup t_aC6k a_aC6l fieldset_ :: forall t_aC6h a_aC6i. Markup t_aC6h a_aC6i -> Markup t_aC6h a_aC6i em_ :: forall t_aC6e a_aC6f. Markup t_aC6e a_aC6f -> Markup t_aC6e a_aC6f dt_ :: forall t_aC6b a_aC6c. Markup t_aC6b a_aC6c -> Markup t_aC6b a_aC6c dl_ :: forall t_aC68 a_aC69. Markup t_aC68 a_aC69 -> Markup t_aC68 a_aC69 div_ :: forall t_aC65 a_aC66. Markup t_aC65 a_aC66 -> Markup t_aC65 a_aC66 dfn_ :: forall t_aC62 a_aC63. Markup t_aC62 a_aC63 -> Markup t_aC62 a_aC63 details_ :: forall t_aC5Z a_aC60. Markup t_aC5Z a_aC60 -> Markup t_aC5Z a_aC60 del_ :: forall t_aC5W a_aC5X. Markup t_aC5W a_aC5X -> Markup t_aC5W a_aC5X dd_ :: forall t_aC5T a_aC5U. Markup t_aC5T a_aC5U -> Markup t_aC5T a_aC5U datalist_ :: forall t_aC5Q a_aC5R. Markup t_aC5Q a_aC5R -> Markup t_aC5Q a_aC5R command_ :: forall t_aC5N a_aC5O. Markup t_aC5N a_aC5O -> Markup t_aC5N a_aC5O colgroup_ :: forall t_aC5K a_aC5L. Markup t_aC5K a_aC5L -> Markup t_aC5K a_aC5L code_ :: forall t_aC5H a_aC5I. Markup t_aC5H a_aC5I -> Markup t_aC5H a_aC5I cite_ :: forall t_aC5E a_aC5F. Markup t_aC5E a_aC5F -> Markup t_aC5E a_aC5F caption_ :: forall t_aC5B a_aC5C. Markup t_aC5B a_aC5C -> Markup t_aC5B a_aC5C canvas_ :: forall t_aC5y a_aC5z. Markup t_aC5y a_aC5z -> Markup t_aC5y a_aC5z button_ :: forall t_aC5v a_aC5w. Markup t_aC5v a_aC5w -> Markup t_aC5v a_aC5w body_ :: forall t_aC5s a_aC5t. Markup t_aC5s a_aC5t -> Markup t_aC5s a_aC5t blockquote_ :: forall t_aC5p a_aC5q. Markup t_aC5p a_aC5q -> Markup t_aC5p a_aC5q bdo_ :: forall t_aC5m a_aC5n. Markup t_aC5m a_aC5n -> Markup t_aC5m a_aC5n b_ :: forall t_aC5j a_aC5k. Markup t_aC5j a_aC5k -> Markup t_aC5j a_aC5k audio_ :: forall t_aC5g a_aC5h. Markup t_aC5g a_aC5h -> Markup t_aC5g a_aC5h aside_ :: forall t_aC5d a_aC5e. Markup t_aC5d a_aC5e -> Markup t_aC5d a_aC5e article_ :: forall t_aC5a a_aC5b. Markup t_aC5a a_aC5b -> Markup t_aC5a a_aC5b address_ :: forall t_aC57 a_aC58. Markup t_aC57 a_aC58 -> Markup t_aC57 a_aC58 abbr_ :: forall t_aC54 a_aC55. Markup t_aC54 a_aC55 -> Markup t_aC54 a_aC55 a_ :: forall t_aC51 a_aC52. Markup t_aC51 a_aC52 -> Markup t_aC51 a_aC52 -- | 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 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 (a ~ (), GHC.TypeLits.KnownSymbol s) => GHC.OverloadedLabels.IsLabel s (Text.Html.Nice.FreeMonad.MakeNode n a) instance Data.Bifunctor.Bifunctor Text.Html.Nice.FreeMonad.Markup module Text.Html.Nice data FastMarkup a class Render a m r :: Render a m => a -> m 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 data Text :: * -- | O(c) Convert a strict Text into a lazy Text. fromStrict :: Text -> Text -- | O(n) Convert a lazy Text into a strict Text. toStrict :: Text -> Text