-- 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