packages feed

lucid 1.0 → 2.0

raw patch · 9 files changed

+1474/−1210 lines, 9 filesdep +containersPVP ok

version bump matches the API change (PVP)

Dependencies added: containers

API changes (from Hackage documentation)

- Lucid: class Mixed a r
- Lucid: mixed :: Mixed a r => Text -> a -> r
- Lucid.Base: class Mixed a r
- Lucid.Base: class MixedRaw a r
- Lucid.Base: instance (Monad m, ToHtml a, r ~ ()) => MixedRaw a (HtmlT m r)
- Lucid.Base: instance (Monad m, a ~ HtmlT m r, r ~ ()) => Mixed a (HtmlT m r)
- Lucid.Base: instance a ~ Text => Mixed a (Text, Text)
- Lucid.Base: instance a ~ Text => MixedRaw a (Text, Text)
- Lucid.Base: mixed :: Mixed a r => Text -> a -> r
- Lucid.Base: mixedRaw :: MixedRaw a r => Text -> a -> r
+ Lucid: class Term arg result | result -> arg where term = flip termWith []
+ Lucid: data Attribute
+ Lucid: term :: Term arg result => Text -> arg -> result
+ Lucid: termWith :: Term arg result => Text -> [Attribute] -> arg -> result
+ Lucid: with :: With a => a -> [Attribute] -> a
+ Lucid.Base: class Term arg result | result -> arg where term = flip termWith []
+ Lucid.Base: class TermRaw arg result | result -> arg where termRaw = flip termRawWith []
+ Lucid.Base: data Attribute
+ Lucid.Base: instance (Monad m, ToHtml f, a ~ ()) => TermRaw [Attribute] (f -> HtmlT m a)
+ Lucid.Base: instance (Monad m, a ~ ()) => Term (HtmlT m a) (HtmlT m a)
+ Lucid.Base: instance (Monad m, a ~ ()) => TermRaw Text (HtmlT m a)
+ Lucid.Base: instance (Monad m, f ~ HtmlT m a, a ~ ()) => Term [Attribute] (f -> HtmlT m a)
+ Lucid.Base: instance Eq Attribute
+ Lucid.Base: instance Show Attribute
+ Lucid.Base: instance Term Text Attribute
+ Lucid.Base: instance TermRaw Text Attribute
+ Lucid.Base: makeAttribute :: Text -> Text -> Attribute
+ Lucid.Base: term :: Term arg result => Text -> arg -> result
+ Lucid.Base: termRaw :: TermRaw arg result => Text -> arg -> result
+ Lucid.Base: termRawWith :: TermRaw arg result => Text -> [Attribute] -> arg -> result
+ Lucid.Base: termWith :: Term arg result => Text -> [Attribute] -> arg -> result
- Lucid.Base: makeElement :: Monad m => Builder -> HtmlT m a -> HtmlT m ()
+ Lucid.Base: makeElement :: Monad m => Text -> HtmlT m a -> HtmlT m ()
- Lucid.Base: makeElementNoEnd :: Monad m => Builder -> HtmlT m ()
+ Lucid.Base: makeElementNoEnd :: Monad m => Text -> HtmlT m ()
- Lucid.Base: with :: With a => a -> [(Text, Text)] -> a
+ Lucid.Base: with :: With a => a -> [Attribute] -> a
- Lucid.Bootstrap: containerFluid_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: containerFluid_ :: Term arg result => arg -> result
- Lucid.Bootstrap: container_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: container_ :: Term arg result => arg -> result
- Lucid.Bootstrap: rowFluid_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: rowFluid_ :: Term arg result => arg -> result
- Lucid.Bootstrap: row_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: row_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span10_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span10_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span11_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span11_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span12_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span12_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span1_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span1_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span2_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span2_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span3_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span3_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span4_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span4_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span5_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span5_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span6_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span6_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span7_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span7_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span8_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span8_ :: Term arg result => arg -> result
- Lucid.Bootstrap: span9_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Bootstrap: span9_ :: Term arg result => arg -> result
- Lucid.Html5: a_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: a_ :: Term arg result => arg -> result
- Lucid.Html5: abbr_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: abbr_ :: Term arg result => arg -> result
- Lucid.Html5: acceptCharset_ :: Text -> (Text, Text)
+ Lucid.Html5: acceptCharset_ :: Text -> Attribute
- Lucid.Html5: accept_ :: Text -> (Text, Text)
+ Lucid.Html5: accept_ :: Text -> Attribute
- Lucid.Html5: accesskey_ :: Text -> (Text, Text)
+ Lucid.Html5: accesskey_ :: Text -> Attribute
- Lucid.Html5: action_ :: Text -> (Text, Text)
+ Lucid.Html5: action_ :: Text -> Attribute
- Lucid.Html5: address_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: address_ :: Term arg result => arg -> result
- Lucid.Html5: alt_ :: Text -> (Text, Text)
+ Lucid.Html5: alt_ :: Text -> Attribute
- Lucid.Html5: area_ :: Monad m => HtmlT m ()
+ Lucid.Html5: area_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: article_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: article_ :: Term arg result => arg -> result
- Lucid.Html5: aside_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: aside_ :: Term arg result => arg -> result
- Lucid.Html5: async_ :: Text -> (Text, Text)
+ Lucid.Html5: async_ :: Text -> Attribute
- Lucid.Html5: audio_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: audio_ :: Term arg result => arg -> result
- Lucid.Html5: autocomplete_ :: Text -> (Text, Text)
+ Lucid.Html5: autocomplete_ :: Text -> Attribute
- Lucid.Html5: autofocus_ :: (Text, Text)
+ Lucid.Html5: autofocus_ :: Attribute
- Lucid.Html5: autoplay_ :: Text -> (Text, Text)
+ Lucid.Html5: autoplay_ :: Text -> Attribute
- Lucid.Html5: b_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: b_ :: Term arg result => arg -> result
- Lucid.Html5: base_ :: Monad m => HtmlT m ()
+ Lucid.Html5: base_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: bdo_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: bdo_ :: Term arg result => arg -> result
- Lucid.Html5: blockquote_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: blockquote_ :: Term arg result => arg -> result
- Lucid.Html5: body_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: body_ :: Term arg result => arg -> result
- Lucid.Html5: br_ :: Monad m => HtmlT m ()
+ Lucid.Html5: br_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: button_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: button_ :: Term arg result => arg -> result
- Lucid.Html5: canvas_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: canvas_ :: Term arg result => arg -> result
- Lucid.Html5: caption_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: caption_ :: Term arg result => arg -> result
- Lucid.Html5: challenge_ :: Text -> (Text, Text)
+ Lucid.Html5: challenge_ :: Text -> Attribute
- Lucid.Html5: charset_ :: Text -> (Text, Text)
+ Lucid.Html5: charset_ :: Text -> Attribute
- Lucid.Html5: checked_ :: (Text, Text)
+ Lucid.Html5: checked_ :: Attribute
- Lucid.Html5: cite_ :: Mixed a r => a -> r
+ Lucid.Html5: cite_ :: Term arg result => arg -> result
- Lucid.Html5: class_ :: Text -> (Text, Text)
+ Lucid.Html5: class_ :: Text -> Attribute
- Lucid.Html5: code_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: code_ :: Term arg result => arg -> result
- Lucid.Html5: col_ :: Monad m => HtmlT m ()
+ Lucid.Html5: col_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: colgroup_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: colgroup_ :: Term arg result => arg -> result
- Lucid.Html5: cols_ :: Text -> (Text, Text)
+ Lucid.Html5: cols_ :: Text -> Attribute
- Lucid.Html5: colspan_ :: Text -> (Text, Text)
+ Lucid.Html5: colspan_ :: Text -> Attribute
- Lucid.Html5: command_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: command_ :: Term arg result => arg -> result
- Lucid.Html5: content_ :: Text -> (Text, Text)
+ Lucid.Html5: content_ :: Text -> Attribute
- Lucid.Html5: contenteditable_ :: Text -> (Text, Text)
+ Lucid.Html5: contenteditable_ :: Text -> Attribute
- Lucid.Html5: contextmenu_ :: Text -> (Text, Text)
+ Lucid.Html5: contextmenu_ :: Text -> Attribute
- Lucid.Html5: controls_ :: Text -> (Text, Text)
+ Lucid.Html5: controls_ :: Text -> Attribute
- Lucid.Html5: coords_ :: Text -> (Text, Text)
+ Lucid.Html5: coords_ :: Text -> Attribute
- Lucid.Html5: data_ :: Text -> (Text, Text)
+ Lucid.Html5: data_ :: Text -> Text -> Attribute
- Lucid.Html5: datalist_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: datalist_ :: Term arg result => arg -> result
- Lucid.Html5: datetime_ :: Text -> (Text, Text)
+ Lucid.Html5: datetime_ :: Text -> Attribute
- Lucid.Html5: dd_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: dd_ :: Term arg result => arg -> result
- Lucid.Html5: defer_ :: Text -> (Text, Text)
+ Lucid.Html5: defer_ :: Text -> Attribute
- Lucid.Html5: del_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: del_ :: Term arg result => arg -> result
- Lucid.Html5: details_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: details_ :: Term arg result => arg -> result
- Lucid.Html5: dfn_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: dfn_ :: Term arg result => arg -> result
- Lucid.Html5: dir_ :: Text -> (Text, Text)
+ Lucid.Html5: dir_ :: Text -> Attribute
- Lucid.Html5: disabled_ :: Text -> (Text, Text)
+ Lucid.Html5: disabled_ :: Text -> Attribute
- Lucid.Html5: div_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: div_ :: Term arg result => arg -> result
- Lucid.Html5: dl_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: dl_ :: Term arg result => arg -> result
- Lucid.Html5: draggable_ :: Text -> (Text, Text)
+ Lucid.Html5: draggable_ :: Text -> Attribute
- Lucid.Html5: dt_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: dt_ :: Term arg result => arg -> result
- Lucid.Html5: em_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: em_ :: Term arg result => arg -> result
- Lucid.Html5: embed_ :: Monad m => HtmlT m ()
+ Lucid.Html5: embed_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: enctype_ :: Text -> (Text, Text)
+ Lucid.Html5: enctype_ :: Text -> Attribute
- Lucid.Html5: fieldset_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: fieldset_ :: Term arg result => arg -> result
- Lucid.Html5: figcaption_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: figcaption_ :: Term arg result => arg -> result
- Lucid.Html5: figure_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: figure_ :: Term arg result => arg -> result
- Lucid.Html5: footer_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: footer_ :: Term arg result => arg -> result
- Lucid.Html5: for_ :: Text -> (Text, Text)
+ Lucid.Html5: for_ :: Text -> Attribute
- Lucid.Html5: form_ :: Mixed a r => a -> r
+ Lucid.Html5: form_ :: Term arg result => arg -> result
- Lucid.Html5: formaction_ :: Text -> (Text, Text)
+ Lucid.Html5: formaction_ :: Text -> Attribute
- Lucid.Html5: formenctype_ :: Text -> (Text, Text)
+ Lucid.Html5: formenctype_ :: Text -> Attribute
- Lucid.Html5: formmethod_ :: Text -> (Text, Text)
+ Lucid.Html5: formmethod_ :: Text -> Attribute
- Lucid.Html5: formnovalidate_ :: Text -> (Text, Text)
+ Lucid.Html5: formnovalidate_ :: Text -> Attribute
- Lucid.Html5: formtarget_ :: Text -> (Text, Text)
+ Lucid.Html5: formtarget_ :: Text -> Attribute
- Lucid.Html5: h1_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h1_ :: Term arg result => arg -> result
- Lucid.Html5: h2_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h2_ :: Term arg result => arg -> result
- Lucid.Html5: h3_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h3_ :: Term arg result => arg -> result
- Lucid.Html5: h4_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h4_ :: Term arg result => arg -> result
- Lucid.Html5: h5_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h5_ :: Term arg result => arg -> result
- Lucid.Html5: h6_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: h6_ :: Term arg result => arg -> result
- Lucid.Html5: head_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: head_ :: Term arg result => arg -> result
- Lucid.Html5: header_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: header_ :: Term arg result => arg -> result
- Lucid.Html5: headers_ :: Text -> (Text, Text)
+ Lucid.Html5: headers_ :: Text -> Attribute
- Lucid.Html5: height_ :: Text -> (Text, Text)
+ Lucid.Html5: height_ :: Text -> Attribute
- Lucid.Html5: hgroup_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: hgroup_ :: Term arg result => arg -> result
- Lucid.Html5: hidden_ :: Text -> (Text, Text)
+ Lucid.Html5: hidden_ :: Text -> Attribute
- Lucid.Html5: high_ :: Text -> (Text, Text)
+ Lucid.Html5: high_ :: Text -> Attribute
- Lucid.Html5: hr_ :: Monad m => HtmlT m ()
+ Lucid.Html5: hr_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: href_ :: Text -> (Text, Text)
+ Lucid.Html5: href_ :: Text -> Attribute
- Lucid.Html5: hreflang_ :: Text -> (Text, Text)
+ Lucid.Html5: hreflang_ :: Text -> Attribute
- Lucid.Html5: html_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: html_ :: Term arg result => arg -> result
- Lucid.Html5: httpEquiv_ :: Text -> (Text, Text)
+ Lucid.Html5: httpEquiv_ :: Text -> Attribute
- Lucid.Html5: i_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: i_ :: Term arg result => arg -> result
- Lucid.Html5: icon_ :: Text -> (Text, Text)
+ Lucid.Html5: icon_ :: Text -> Attribute
- Lucid.Html5: id_ :: Text -> (Text, Text)
+ Lucid.Html5: id_ :: Text -> Attribute
- Lucid.Html5: iframe_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: iframe_ :: Term arg result => arg -> result
- Lucid.Html5: img_ :: Monad m => HtmlT m ()
+ Lucid.Html5: img_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: input_ :: Monad m => HtmlT m ()
+ Lucid.Html5: input_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: ins_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: ins_ :: Term arg result => arg -> result
- Lucid.Html5: ismap_ :: Text -> (Text, Text)
+ Lucid.Html5: ismap_ :: Text -> Attribute
- Lucid.Html5: item_ :: Text -> (Text, Text)
+ Lucid.Html5: item_ :: Text -> Attribute
- Lucid.Html5: itemprop_ :: Text -> (Text, Text)
+ Lucid.Html5: itemprop_ :: Text -> Attribute
- Lucid.Html5: kbd_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: kbd_ :: Term arg result => arg -> result
- Lucid.Html5: keygen_ :: Monad m => HtmlT m ()
+ Lucid.Html5: keygen_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: keytype_ :: Text -> (Text, Text)
+ Lucid.Html5: keytype_ :: Text -> Attribute
- Lucid.Html5: label_ :: Mixed a r => a -> r
+ Lucid.Html5: label_ :: Term arg result => arg -> result
- Lucid.Html5: lang_ :: Text -> (Text, Text)
+ Lucid.Html5: lang_ :: Text -> Attribute
- Lucid.Html5: legend_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: legend_ :: Term arg result => arg -> result
- Lucid.Html5: li_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: li_ :: Term arg result => arg -> result
- Lucid.Html5: link_ :: Monad m => HtmlT m ()
+ Lucid.Html5: link_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: list_ :: Text -> (Text, Text)
+ Lucid.Html5: list_ :: Text -> Attribute
- Lucid.Html5: loop_ :: Text -> (Text, Text)
+ Lucid.Html5: loop_ :: Text -> Attribute
- Lucid.Html5: low_ :: Text -> (Text, Text)
+ Lucid.Html5: low_ :: Text -> Attribute
- Lucid.Html5: manifest_ :: Text -> (Text, Text)
+ Lucid.Html5: manifest_ :: Text -> Attribute
- Lucid.Html5: map_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: map_ :: Term arg result => arg -> result
- Lucid.Html5: mark_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: mark_ :: Term arg result => arg -> result
- Lucid.Html5: max_ :: Text -> (Text, Text)
+ Lucid.Html5: max_ :: Text -> Attribute
- Lucid.Html5: maxlength_ :: Text -> (Text, Text)
+ Lucid.Html5: maxlength_ :: Text -> Attribute
- Lucid.Html5: media_ :: Text -> (Text, Text)
+ Lucid.Html5: media_ :: Text -> Attribute
- Lucid.Html5: menu_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: menu_ :: Term arg result => arg -> result
- Lucid.Html5: menuitem_ :: Monad m => HtmlT m ()
+ Lucid.Html5: menuitem_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: meta_ :: Monad m => HtmlT m ()
+ Lucid.Html5: meta_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: meter_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: meter_ :: Term arg result => arg -> result
- Lucid.Html5: method_ :: Text -> (Text, Text)
+ Lucid.Html5: method_ :: Text -> Attribute
- Lucid.Html5: min_ :: Text -> (Text, Text)
+ Lucid.Html5: min_ :: Text -> Attribute
- Lucid.Html5: multiple_ :: Text -> (Text, Text)
+ Lucid.Html5: multiple_ :: Text -> Attribute
- Lucid.Html5: name_ :: Text -> (Text, Text)
+ Lucid.Html5: name_ :: Text -> Attribute
- Lucid.Html5: nav_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: nav_ :: Term arg result => arg -> result
- Lucid.Html5: noscript_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: noscript_ :: Term arg result => arg -> result
- Lucid.Html5: novalidate_ :: Text -> (Text, Text)
+ Lucid.Html5: novalidate_ :: Text -> Attribute
- Lucid.Html5: object_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: object_ :: Term arg result => arg -> result
- Lucid.Html5: ol_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: ol_ :: Term arg result => arg -> result
- Lucid.Html5: onbeforeonload_ :: Text -> (Text, Text)
+ Lucid.Html5: onbeforeonload_ :: Text -> Attribute
- Lucid.Html5: onbeforeprint_ :: Text -> (Text, Text)
+ Lucid.Html5: onbeforeprint_ :: Text -> Attribute
- Lucid.Html5: onblur_ :: Text -> (Text, Text)
+ Lucid.Html5: onblur_ :: Text -> Attribute
- Lucid.Html5: oncanplay_ :: Text -> (Text, Text)
+ Lucid.Html5: oncanplay_ :: Text -> Attribute
- Lucid.Html5: oncanplaythrough_ :: Text -> (Text, Text)
+ Lucid.Html5: oncanplaythrough_ :: Text -> Attribute
- Lucid.Html5: onchange_ :: Text -> (Text, Text)
+ Lucid.Html5: onchange_ :: Text -> Attribute
- Lucid.Html5: onclick_ :: Text -> (Text, Text)
+ Lucid.Html5: onclick_ :: Text -> Attribute
- Lucid.Html5: oncontextmenu_ :: Text -> (Text, Text)
+ Lucid.Html5: oncontextmenu_ :: Text -> Attribute
- Lucid.Html5: ondblclick_ :: Text -> (Text, Text)
+ Lucid.Html5: ondblclick_ :: Text -> Attribute
- Lucid.Html5: ondrag_ :: Text -> (Text, Text)
+ Lucid.Html5: ondrag_ :: Text -> Attribute
- Lucid.Html5: ondragend_ :: Text -> (Text, Text)
+ Lucid.Html5: ondragend_ :: Text -> Attribute
- Lucid.Html5: ondragenter_ :: Text -> (Text, Text)
+ Lucid.Html5: ondragenter_ :: Text -> Attribute
- Lucid.Html5: ondragleave_ :: Text -> (Text, Text)
+ Lucid.Html5: ondragleave_ :: Text -> Attribute
- Lucid.Html5: ondragover_ :: Text -> (Text, Text)
+ Lucid.Html5: ondragover_ :: Text -> Attribute
- Lucid.Html5: ondragstart_ :: Text -> (Text, Text)
+ Lucid.Html5: ondragstart_ :: Text -> Attribute
- Lucid.Html5: ondrop_ :: Text -> (Text, Text)
+ Lucid.Html5: ondrop_ :: Text -> Attribute
- Lucid.Html5: ondurationchange_ :: Text -> (Text, Text)
+ Lucid.Html5: ondurationchange_ :: Text -> Attribute
- Lucid.Html5: onemptied_ :: Text -> (Text, Text)
+ Lucid.Html5: onemptied_ :: Text -> Attribute
- Lucid.Html5: onended_ :: Text -> (Text, Text)
+ Lucid.Html5: onended_ :: Text -> Attribute
- Lucid.Html5: onerror_ :: Text -> (Text, Text)
+ Lucid.Html5: onerror_ :: Text -> Attribute
- Lucid.Html5: onfocus_ :: Text -> (Text, Text)
+ Lucid.Html5: onfocus_ :: Text -> Attribute
- Lucid.Html5: onformchange_ :: Text -> (Text, Text)
+ Lucid.Html5: onformchange_ :: Text -> Attribute
- Lucid.Html5: onforminput_ :: Text -> (Text, Text)
+ Lucid.Html5: onforminput_ :: Text -> Attribute
- Lucid.Html5: onhaschange_ :: Text -> (Text, Text)
+ Lucid.Html5: onhaschange_ :: Text -> Attribute
- Lucid.Html5: oninput_ :: Text -> (Text, Text)
+ Lucid.Html5: oninput_ :: Text -> Attribute
- Lucid.Html5: oninvalid_ :: Text -> (Text, Text)
+ Lucid.Html5: oninvalid_ :: Text -> Attribute
- Lucid.Html5: onkeydown_ :: Text -> (Text, Text)
+ Lucid.Html5: onkeydown_ :: Text -> Attribute
- Lucid.Html5: onkeyup_ :: Text -> (Text, Text)
+ Lucid.Html5: onkeyup_ :: Text -> Attribute
- Lucid.Html5: onload_ :: Text -> (Text, Text)
+ Lucid.Html5: onload_ :: Text -> Attribute
- Lucid.Html5: onloadeddata_ :: Text -> (Text, Text)
+ Lucid.Html5: onloadeddata_ :: Text -> Attribute
- Lucid.Html5: onloadedmetadata_ :: Text -> (Text, Text)
+ Lucid.Html5: onloadedmetadata_ :: Text -> Attribute
- Lucid.Html5: onloadstart_ :: Text -> (Text, Text)
+ Lucid.Html5: onloadstart_ :: Text -> Attribute
- Lucid.Html5: onmessage_ :: Text -> (Text, Text)
+ Lucid.Html5: onmessage_ :: Text -> Attribute
- Lucid.Html5: onmousedown_ :: Text -> (Text, Text)
+ Lucid.Html5: onmousedown_ :: Text -> Attribute
- Lucid.Html5: onmousemove_ :: Text -> (Text, Text)
+ Lucid.Html5: onmousemove_ :: Text -> Attribute
- Lucid.Html5: onmouseout_ :: Text -> (Text, Text)
+ Lucid.Html5: onmouseout_ :: Text -> Attribute
- Lucid.Html5: onmouseover_ :: Text -> (Text, Text)
+ Lucid.Html5: onmouseover_ :: Text -> Attribute
- Lucid.Html5: onmouseup_ :: Text -> (Text, Text)
+ Lucid.Html5: onmouseup_ :: Text -> Attribute
- Lucid.Html5: onmousewheel_ :: Text -> (Text, Text)
+ Lucid.Html5: onmousewheel_ :: Text -> Attribute
- Lucid.Html5: ononline_ :: Text -> (Text, Text)
+ Lucid.Html5: ononline_ :: Text -> Attribute
- Lucid.Html5: onpagehide_ :: Text -> (Text, Text)
+ Lucid.Html5: onpagehide_ :: Text -> Attribute
- Lucid.Html5: onpageshow_ :: Text -> (Text, Text)
+ Lucid.Html5: onpageshow_ :: Text -> Attribute
- Lucid.Html5: onpause_ :: Text -> (Text, Text)
+ Lucid.Html5: onpause_ :: Text -> Attribute
- Lucid.Html5: onplay_ :: Text -> (Text, Text)
+ Lucid.Html5: onplay_ :: Text -> Attribute
- Lucid.Html5: onplaying_ :: Text -> (Text, Text)
+ Lucid.Html5: onplaying_ :: Text -> Attribute
- Lucid.Html5: onprogress_ :: Text -> (Text, Text)
+ Lucid.Html5: onprogress_ :: Text -> Attribute
- Lucid.Html5: onpropstate_ :: Text -> (Text, Text)
+ Lucid.Html5: onpropstate_ :: Text -> Attribute
- Lucid.Html5: onratechange_ :: Text -> (Text, Text)
+ Lucid.Html5: onratechange_ :: Text -> Attribute
- Lucid.Html5: onreadystatechange_ :: Text -> (Text, Text)
+ Lucid.Html5: onreadystatechange_ :: Text -> Attribute
- Lucid.Html5: onredo_ :: Text -> (Text, Text)
+ Lucid.Html5: onredo_ :: Text -> Attribute
- Lucid.Html5: onresize_ :: Text -> (Text, Text)
+ Lucid.Html5: onresize_ :: Text -> Attribute
- Lucid.Html5: onscroll_ :: Text -> (Text, Text)
+ Lucid.Html5: onscroll_ :: Text -> Attribute
- Lucid.Html5: onseeked_ :: Text -> (Text, Text)
+ Lucid.Html5: onseeked_ :: Text -> Attribute
- Lucid.Html5: onseeking_ :: Text -> (Text, Text)
+ Lucid.Html5: onseeking_ :: Text -> Attribute
- Lucid.Html5: onselect_ :: Text -> (Text, Text)
+ Lucid.Html5: onselect_ :: Text -> Attribute
- Lucid.Html5: onstalled_ :: Text -> (Text, Text)
+ Lucid.Html5: onstalled_ :: Text -> Attribute
- Lucid.Html5: onstorage_ :: Text -> (Text, Text)
+ Lucid.Html5: onstorage_ :: Text -> Attribute
- Lucid.Html5: onsubmit_ :: Text -> (Text, Text)
+ Lucid.Html5: onsubmit_ :: Text -> Attribute
- Lucid.Html5: onsuspend_ :: Text -> (Text, Text)
+ Lucid.Html5: onsuspend_ :: Text -> Attribute
- Lucid.Html5: ontimeupdate_ :: Text -> (Text, Text)
+ Lucid.Html5: ontimeupdate_ :: Text -> Attribute
- Lucid.Html5: onundo_ :: Text -> (Text, Text)
+ Lucid.Html5: onundo_ :: Text -> Attribute
- Lucid.Html5: onunload_ :: Text -> (Text, Text)
+ Lucid.Html5: onunload_ :: Text -> Attribute
- Lucid.Html5: onvolumechange_ :: Text -> (Text, Text)
+ Lucid.Html5: onvolumechange_ :: Text -> Attribute
- Lucid.Html5: onwaiting_ :: Text -> (Text, Text)
+ Lucid.Html5: onwaiting_ :: Text -> Attribute
- Lucid.Html5: open_ :: Text -> (Text, Text)
+ Lucid.Html5: open_ :: Text -> Attribute
- Lucid.Html5: optgroup_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: optgroup_ :: Term arg result => arg -> result
- Lucid.Html5: optimum_ :: Text -> (Text, Text)
+ Lucid.Html5: optimum_ :: Text -> Attribute
- Lucid.Html5: option_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: option_ :: Term arg result => arg -> result
- Lucid.Html5: output_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: output_ :: Term arg result => arg -> result
- Lucid.Html5: p_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: p_ :: Term arg result => arg -> result
- Lucid.Html5: param_ :: Monad m => HtmlT m ()
+ Lucid.Html5: param_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: pattern_ :: Text -> (Text, Text)
+ Lucid.Html5: pattern_ :: Text -> Attribute
- Lucid.Html5: ping_ :: Text -> (Text, Text)
+ Lucid.Html5: ping_ :: Text -> Attribute
- Lucid.Html5: placeholder_ :: Text -> (Text, Text)
+ Lucid.Html5: placeholder_ :: Text -> Attribute
- Lucid.Html5: pre_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: pre_ :: Term arg result => arg -> result
- Lucid.Html5: preload_ :: Text -> (Text, Text)
+ Lucid.Html5: preload_ :: Text -> Attribute
- Lucid.Html5: progress_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: progress_ :: Term arg result => arg -> result
- Lucid.Html5: pubdate_ :: Text -> (Text, Text)
+ Lucid.Html5: pubdate_ :: Text -> Attribute
- Lucid.Html5: q_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: q_ :: Term arg result => arg -> result
- Lucid.Html5: radiogroup_ :: Text -> (Text, Text)
+ Lucid.Html5: radiogroup_ :: Text -> Attribute
- Lucid.Html5: readonly_ :: Text -> (Text, Text)
+ Lucid.Html5: readonly_ :: Text -> Attribute
- Lucid.Html5: rel_ :: Text -> (Text, Text)
+ Lucid.Html5: rel_ :: Text -> Attribute
- Lucid.Html5: required_ :: Text -> (Text, Text)
+ Lucid.Html5: required_ :: Text -> Attribute
- Lucid.Html5: reversed_ :: Text -> (Text, Text)
+ Lucid.Html5: reversed_ :: Text -> Attribute
- Lucid.Html5: rows_ :: Text -> (Text, Text)
+ Lucid.Html5: rows_ :: Text -> Attribute
- Lucid.Html5: rowspan_ :: Text -> (Text, Text)
+ Lucid.Html5: rowspan_ :: Text -> Attribute
- Lucid.Html5: rp_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: rp_ :: Term arg result => arg -> result
- Lucid.Html5: rt_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: rt_ :: Term arg result => arg -> result
- Lucid.Html5: ruby_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: ruby_ :: Term arg result => arg -> result
- Lucid.Html5: samp_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: samp_ :: Term arg result => arg -> result
- Lucid.Html5: sandbox_ :: Text -> (Text, Text)
+ Lucid.Html5: sandbox_ :: Text -> Attribute
- Lucid.Html5: scope_ :: Text -> (Text, Text)
+ Lucid.Html5: scope_ :: Text -> Attribute
- Lucid.Html5: scoped_ :: Text -> (Text, Text)
+ Lucid.Html5: scoped_ :: Text -> Attribute
- Lucid.Html5: script_ :: (ToHtml t, Monad m) => t -> HtmlT m ()
+ Lucid.Html5: script_ :: TermRaw arg result => arg -> result
- Lucid.Html5: seamless_ :: Text -> (Text, Text)
+ Lucid.Html5: seamless_ :: Text -> Attribute
- Lucid.Html5: section_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: section_ :: Term arg result => arg -> result
- Lucid.Html5: select_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: select_ :: Term arg result => arg -> result
- Lucid.Html5: selected_ :: Text -> (Text, Text)
+ Lucid.Html5: selected_ :: Text -> Attribute
- Lucid.Html5: shape_ :: Text -> (Text, Text)
+ Lucid.Html5: shape_ :: Text -> Attribute
- Lucid.Html5: size_ :: Text -> (Text, Text)
+ Lucid.Html5: size_ :: Text -> Attribute
- Lucid.Html5: sizes_ :: Text -> (Text, Text)
+ Lucid.Html5: sizes_ :: Text -> Attribute
- Lucid.Html5: small_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: small_ :: Term arg result => arg -> result
- Lucid.Html5: source_ :: Monad m => HtmlT m ()
+ Lucid.Html5: source_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: span_ :: Mixed a r => a -> r
+ Lucid.Html5: span_ :: Term arg result => arg -> result
- Lucid.Html5: spellcheck_ :: Text -> (Text, Text)
+ Lucid.Html5: spellcheck_ :: Text -> Attribute
- Lucid.Html5: src_ :: Text -> (Text, Text)
+ Lucid.Html5: src_ :: Text -> Attribute
- Lucid.Html5: srcdoc_ :: Text -> (Text, Text)
+ Lucid.Html5: srcdoc_ :: Text -> Attribute
- Lucid.Html5: start_ :: Text -> (Text, Text)
+ Lucid.Html5: start_ :: Text -> Attribute
- Lucid.Html5: step_ :: Text -> (Text, Text)
+ Lucid.Html5: step_ :: Text -> Attribute
- Lucid.Html5: strong_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: strong_ :: Term arg result => arg -> result
- Lucid.Html5: style_ :: MixedRaw a r => a -> r
+ Lucid.Html5: style_ :: TermRaw arg result => arg -> result
- Lucid.Html5: sub_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: sub_ :: Term arg result => arg -> result
- Lucid.Html5: subject_ :: Text -> (Text, Text)
+ Lucid.Html5: subject_ :: Text -> Attribute
- Lucid.Html5: summary_ :: Mixed a r => a -> r
+ Lucid.Html5: summary_ :: Term arg result => arg -> result
- Lucid.Html5: sup_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: sup_ :: Term arg result => arg -> result
- Lucid.Html5: tabindex_ :: Text -> (Text, Text)
+ Lucid.Html5: tabindex_ :: Text -> Attribute
- Lucid.Html5: table_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: table_ :: Term arg result => arg -> result
- Lucid.Html5: target_ :: Text -> (Text, Text)
+ Lucid.Html5: target_ :: Text -> Attribute
- Lucid.Html5: tbody_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: tbody_ :: Term arg result => arg -> result
- Lucid.Html5: td_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: td_ :: Term arg result => arg -> result
- Lucid.Html5: textarea_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: textarea_ :: Term arg result => arg -> result
- Lucid.Html5: tfoot_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: tfoot_ :: Term arg result => arg -> result
- Lucid.Html5: th_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: th_ :: Term arg result => arg -> result
- Lucid.Html5: thead_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: thead_ :: Term arg result => arg -> result
- Lucid.Html5: time_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: time_ :: Term arg result => arg -> result
- Lucid.Html5: title_ :: Mixed a r => a -> r
+ Lucid.Html5: title_ :: Term arg result => arg -> result
- Lucid.Html5: tr_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: tr_ :: Term arg result => arg -> result
- Lucid.Html5: track_ :: Monad m => HtmlT m ()
+ Lucid.Html5: track_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: type_ :: Text -> (Text, Text)
+ Lucid.Html5: type_ :: Text -> Attribute
- Lucid.Html5: ul_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: ul_ :: Term arg result => arg -> result
- Lucid.Html5: usemap_ :: Text -> (Text, Text)
+ Lucid.Html5: usemap_ :: Text -> Attribute
- Lucid.Html5: value_ :: Text -> (Text, Text)
+ Lucid.Html5: value_ :: Text -> Attribute
- Lucid.Html5: var_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: var_ :: Term arg result => arg -> result
- Lucid.Html5: video_ :: Monad m => HtmlT m () -> HtmlT m ()
+ Lucid.Html5: video_ :: Term arg result => arg -> result
- Lucid.Html5: wbr_ :: Monad m => HtmlT m ()
+ Lucid.Html5: wbr_ :: Monad m => [Attribute] -> HtmlT m ()
- Lucid.Html5: width_ :: Text -> (Text, Text)
+ Lucid.Html5: width_ :: Text -> Attribute
- Lucid.Html5: wrap_ :: Text -> (Text, Text)
+ Lucid.Html5: wrap_ :: Text -> Attribute
- Lucid.Html5: xmlns_ :: Text -> (Text, Text)
+ Lucid.Html5: xmlns_ :: Text -> Attribute

Files

+ CHANGELOG.md view
@@ -0,0 +1,8 @@+## 2.0++* Use variadic HTML terms.+* Add lazy Text instance for ToHtml.++## 1.0++* Initial version.
README.md view
@@ -26,7 +26,7 @@ Elements nest by function application:  ``` haskell-λ> table_ (tr_ (td_ (p_ "Hello, World!")))+λ> table_ (tr_ (td_ (p_ "Hello, World!"))) :: Html () ```  ``` html@@ -36,7 +36,7 @@ Elements are juxtaposed via monoidal append:  ``` haskell-λ> p_ "hello" <> p_ "sup"+λ> p_ "hello" <> p_ "sup" :: Html () ```  ``` html@@ -46,7 +46,7 @@ Or monadic sequencing:  ``` haskell-λ> div_ (do p_ "hello"; p_ "sup")+λ> div_ (do p_ "hello"; p_ "sup") :: Html () ```  ``` html@@ -56,7 +56,7 @@ Attributes are set using the 'with' combinator:  ``` haskell-λ> with p_ [class_ "brand"] "Lucid Inc"+λ> with p_ [class_ "brand"] "Lucid Inc" :: Html () ```  ``` html@@ -121,7 +121,10 @@ You can use `lift` to call parent monads.  ``` haskell-λ> runReader (renderTextT (html_ (body_ (do name <- lift ask; p_ (toHtml name)))))+λ> runReader (renderTextT (html_ (body_ (do name <- lift ask+                                            p_ [class_ "name"] (toHtml name)))))              ("Chris" :: String)-"<html><body><p>Chris</p></body></html>"+```+``` html+"<html><body><p class=\"name\">Chris</p></body></html>" ```
lucid.cabal view
@@ -1,5 +1,5 @@ name:                lucid-version:             1.0+version:             2.0 synopsis:            Clear to write, read and edit DSL for HTML description:         Clear to write, read and edit DSL for HTML. See the 'Lucid' module                      for description and documentation.@@ -12,7 +12,7 @@ category:            Web build-type:          Simple cabal-version:       >=1.8-extra-source-files:  README.md+extra-source-files:  README.md, CHANGELOG.md  library   hs-source-dirs:    src/@@ -24,6 +24,7 @@   build-depends:     base >= 4 && <5                    , blaze-builder                    , bytestring+                   , containers                    , mtl                    , text                    , transformers@@ -33,6 +34,7 @@     type: exitcode-stdio-1.0     main-is: Main.hs     hs-source-dirs: test+    other-modules: Example1     build-depends: base,                    lucid,                    HUnit,
src/Lucid.hs view
@@ -1,4 +1,10 @@ -- | Clear to write, read and edit DSL for writing HTML+--+-- See "Lucid.Html5" for a complete list of Html5 combinators. That+-- module is re-exported from this module for your convenience.+--+-- See "Lucid.Base" for lower level functions like+-- `makeElement`, `makeAttribute`, 'termRaw', etc.  module Lucid   (-- * Intro@@ -14,10 +20,12 @@   ,runHtmlT    -- * Types   ,Html+  ,Attribute    -- * Classes+   -- $overloaded+  ,Term(..)   ,ToHtml(..)-  ,Mixed(..)-  ,With+  ,With(..)   -- * Re-exports   ,module Lucid.Html5)  where@@ -32,7 +40,9 @@ -- -- 'p_', 'class_', 'table_', 'style_' ----- See "Lucid.Html5" for a complete list of Html5 combinators.+-- Note: If you're testing in the REPL you need to add a type annotation to+-- indicate that you want HTML. In normal code your top-level+-- declaration signatures handle that. -- -- Plain text is written using the @OverloadedStrings@ and -- @ExtendedDefaultRules@ extensions, and is automatically escaped:@@ -40,45 +50,92 @@ -- >>> "123 < 456" :: Html () -- 123 &lt; 456 --+-- Except some elements, like 'script_':+--+-- >>> script_ "alert('Hello!' > 12)" :: Html ()+-- <script>alert('Hello!' > 12)</script>+-- -- Elements nest by function application: ----- >>> table_ (tr_ (td_ (p_ "Hello, World!")))+-- >>> table_ (tr_ (td_ (p_ "Hello, World!"))) :: Html () -- <table><tr><td><p>Hello, World!</p></td></tr></table> -- -- Elements are juxtaposed via monoidal append: ----- >>> p_ "hello" <> p_ "sup"+-- >>> p_ "hello" <> p_ "sup" :: Html () -- <p>hello</p><p>sup</p> -- -- Or monadic sequencing: ----- >>> div_ (do p_ "hello"; p_ "sup")+-- >>> div_ (do p_ "hello"; p_ "sup") :: Html () -- <div><p>hello</p><p>sup</p></div> ----- Attributes are set using the 'with' combinator:+-- Attributes are set by providing an argument list: ----- >>> with p_ [class_ "brand"] "Lucid Inc"+-- >>> p_ [class_ "brand"] "Lucid Inc" :: Html () -- <p class="brand">Lucid Inc</p> --+-- >>> p_ [data_ "zot" "foo",checked_] "Go!" :: Html ()+-- <p data-zot="foo" checked>go</p>+--+-- Attribute and element terms are not conflicting:+--+-- >>> style_ [style_ "inception"] "Go deeper." :: Html ()+-- <style style="inception">Go deeper.</style>+-- -- Here is a fuller example of Lucid: -- -- @--- with table_ [rows_ "2"]---      (tr_ (do with td_ [class_ "top",colspan_ "2"]---                    (p_ "Hello, attributes!")---               td_ "yay!"))+-- table_ [rows_ "2"]+--        (tr_ (do td_ [class_ "top",colspan_ "2",style_ "color:red"]+--                     (p_ "Hello, attributes!")+--                 td_ "yay!")) -- @ --+-- Elements (and some attributes) are variadic and overloaded, see the+-- 'Term' class for more explanation about that.+-- -- For proper rendering you can easily run some HTML immediately with: -- -- >>> renderText (p_ "Hello!") -- > "<p>Hello!</p>" ----- >>> renderBS (with p_ [style_ "color:red"] "Hello!")+-- >>> renderBS (p_ [style_ "color:red"] "Hello!") -- "<p style=\"color:red\">Hello!</p>" -- -- For ease of use in GHCi, there is a 'Show' instance, as -- demonstrated above.++-- $overloaded+--+-- To support convenient use of HTML terms, HTML terms are+-- overloaded. Here are the following types possible for an element+-- term accepting attributes and/or children:+--+-- @+-- p_ :: Term arg result => arg -> result+-- p_ :: Monad m => [Attribute] -> HtmlT m () -> HtmlT m ()+-- p_ :: Monad m => HtmlT m () -> HtmlT m ()+-- @+--+-- The first is the generic form. The latter two are the possible+-- types for an element.+--+-- Elements that accept no content are always concrete:+--+-- @+-- input_ :: Monad m => [Attribute] -> HtmlT m ()+-- @+--+-- And some attributes share the same name as attributes, so you can+-- also overload them as attributes:+--+-- @+-- style_ :: TermRaw arg result => arg -> result+-- style_ :: Monad m => [Attribute] -> Text -> HtmlT m ()+-- style_ :: Monad m => Text -> HtmlT m ()+-- style_ :: Text -> Attribute+-- @  -- $running --
src/Lucid/Base.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE ExtendedDefaultRules #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE GADTs #-}@@ -18,17 +21,18 @@   ,evalHtmlT   ,runHtmlT   -- * Combinators-  ,with   ,makeElement   ,makeElementNoEnd+  ,makeAttribute    -- * Types   ,Html   ,HtmlT+  ,Attribute    -- * Classes+  ,Term(..)+  ,TermRaw(..)   ,ToHtml(..)-  ,Mixed(..)-  ,MixedRaw(..)-  ,With)+  ,With(..))   where  import           Blaze.ByteString.Builder (Builder)@@ -52,6 +56,10 @@ -------------------------------------------------------------------------------- -- Types +-- | A simple attribute.+newtype Attribute = Attribute (Text,Text)+  deriving (Show,Eq)+ -- | Simple HTML builder type. Defined in terms of 'HtmlT'. Check out -- that type for instance information. --@@ -134,55 +142,113 @@   toHtml m = HtmlT (return ((\_ _ -> encode m),()))   toHtmlRaw m = HtmlT (return ((\_ _ -> Blaze.fromText m),())) --- | Used for names that are mixed, e.g. 'style_'.-class Mixed a r where-  mixed :: Text -> a -> r+instance ToHtml LT.Text where+  toHtml m = HtmlT (return ((\_ _ -> encodeLazy m),()))+  toHtmlRaw m = HtmlT (return ((\_ _ -> Blaze.fromLazyText m),())) --- | Attributes can be a mixed thing e.g. 'style_'.-instance (a ~ Text) => Mixed a (Text,Text) where-  mixed key value = (key,value)+-- | Used to construct HTML terms.+--+-- Simplest use: p_ = term "p" yields 'Lucid.Html5.p_'.+--+-- Very overloaded for three cases:+--+-- * The first case is the basic @arg@ of @[(Text,Text)]@ which will+--   return a function that wants children.+-- * The second is an @arg@ which is @HtmlT m ()@, in which case the+--   term accepts no attributes and just the children are used for the+--   element.+-- * Finally, this is also used for overloaded attributes, like+--   `Lucid.Html5.style_` or `Lucid.Html5.title_`. If a return type of @(Text,Text)@ is inferred+--   then an attribute will be made.+--+-- The instances look intimidating but actually the constraints make+-- it very general so that type inference works well even in the+-- presence of things like @OverloadedLists@ and such.+class Term arg result | result -> arg where+  -- | Used for constructing elements e.g. @term "p"@ yields 'Lucid.Html5.p_'.+  term :: Text   -- ^ Name of the element or attribute.+       -> arg    -- ^ Either an attribute list or children.+       -> result -- ^ Result: either an element or an attribute.+  term = flip termWith []+  -- | Use this if you want to make an element which inserts some+  -- pre-prepared attributes into the element.+  termWith :: Text          -- ^ Name.+           -> [Attribute]   -- ^ Attribute transformer.+           -> arg           -- ^ Some argument.+           -> result        -- ^ Result: either an element or an attribute. --- | HTML elements can be a mixed thing e.g. 'style_'.-instance (Monad m,a ~ HtmlT m r,r ~ ()) => Mixed a (HtmlT m r) where-  mixed = makeElement . Blaze.fromText+-- | Given attributes, expect more child input.+instance (Monad m,f ~ HtmlT m a, a ~ ()) => Term [Attribute] (f -> HtmlT m a) where+  termWith name f = with (makeElement name) . (<> f) --- | Used for names that are mixed, e.g. 'style_'. Doesn't encode the--- inner content of its element.-class MixedRaw a r where-  mixedRaw :: Text -> a -> r+-- | Given children immediately, just use that and expect no+-- attributes.+instance (Monad m,a ~ ()) => Term (HtmlT m a) (HtmlT m a) where+  termWith name f = with (makeElement name) f --- | Attributes can be a mixed thing e.g. 'style_'.-instance (a ~ Text) => MixedRaw a (Text,Text) where-  mixedRaw key value = (key,value)+-- | Some terms (like 'Lucid.Html5.style_', 'Lucid.Html5.title_') can be used for+-- attributes as well as elements.+instance Term Text Attribute where+  termWith key _ value = makeAttribute key value --- | HTML elements can be a mixed thing e.g. 'style_'. Doesn't encode--- the text content.-instance (Monad m,ToHtml a,r ~ ()) => MixedRaw a (HtmlT m r) where-  mixedRaw n = makeElement (Blaze.fromText n) . toHtmlRaw+-- | Same as the 'Term' class, but will not HTML escape its+-- children. Useful for elements like 'Lucid.Html5.style_' or+-- 'Lucid.Html5.script_'.+class TermRaw arg result | result -> arg where+  -- | Used for constructing elements e.g. @termRaw "p"@ yields 'Lucid.Html5.p_'.+  termRaw :: Text   -- ^ Name of the element or attribute.+       -> arg    -- ^ Either an attribute list or children.+       -> result -- ^ Result: either an element or an attribute.+  termRaw = flip termRawWith []+  -- | Use this if you want to make an element which inserts some+  -- pre-prepared attributes into the element.+  termRawWith :: Text          -- ^ Name.+           -> [Attribute]   -- ^ Attribute transformer.+           -> arg           -- ^ Some argument.+           -> result        -- ^ Result: either an element or an attribute. --- | With an element use these attributes.-class With a where+-- | Given attributes, expect more child input.+instance (Monad m,ToHtml f, a ~ ()) => TermRaw [Attribute] (f -> HtmlT m a) where+  termRawWith name f attrs = with (makeElement name) (attrs <> f) . toHtmlRaw++-- | Given children immediately, just use that and expect no+-- attributes.+instance (Monad m,a ~ ()) => TermRaw Text (HtmlT m a) where+  termRawWith name f = with (makeElement name) f . toHtmlRaw++-- | Some termRaws (like 'Lucid.Html5.style_', 'Lucid.Html5.title_') can be used for+-- attributes as well as elements.+instance TermRaw Text Attribute where+  termRawWith key _ value = makeAttribute key value++-- | With an element use these attributes. An overloaded way of adding+-- attributes either to an element accepting attributes-and-children+-- or one that just accepts attributes. See the two instances.+class With a  where   -- | With the given element(s), use the given attributes.   with :: a -- ^ Some element, either @Html ()@ or @Html () -> Html ()@.-       -> [(Text,Text)] -> a+       -> [Attribute]+       -> a --- | For the contentless elements: 'br_'+-- | For the contentless elements: 'Lucid.Html5.br_' instance (Monad m,a ~ ()) => With (HtmlT m a) where   with f =     \attr ->       HtmlT (do ~(f',_) <- runHtmlT f                 return (\attr' m' ->-                          f' (unionArgs (M.fromList attr) attr') m'+                          f' (unionArgs (M.fromListWith (<>) (map toPair attr)) attr') m'                        ,()))+    where toPair (Attribute x) = x --- | For the contentful elements: 'div_'+-- | For the contentful elements: 'Lucid.Html5.div_' instance (Monad m,a ~ ()) => With (HtmlT m a -> HtmlT m a) where   with f =     \attr inner ->       HtmlT (do ~(f',_) <- runHtmlT (f inner)                 return ((\attr' m' ->-                           f' (unionArgs (M.fromList attr) attr') m')+                           f' (unionArgs (M.fromListWith (<>) (map toPair attr)) attr') m')                        ,()))+    where toPair (Attribute x) = x  -- | Union two sets of arguments and append duplicate keys. unionArgs :: HashMap Text Text -> HashMap Text Text -> HashMap Text Text@@ -272,25 +338,33 @@ -------------------------------------------------------------------------------- -- Combinators +-- | Make an attribute builder.+makeAttribute :: Text -- ^ Attribute name.+              -> Text -- ^ Attribute value.+              -> Attribute+makeAttribute x y = Attribute (x,y)+ -- | Make an HTML builder. makeElement :: Monad m-            => Builder -- ^ Name.+            => Text       -- ^ Name.             -> HtmlT m a  -- ^ Children HTML.             -> HtmlT m () -- ^ A parent element. makeElement name =   \m' ->     HtmlT (do ~(f,_) <- runHtmlT m'-              return (\attr m -> s "<" <> name <> foldlMapWithKey buildAttr attr <> s ">"+              return (\attr m -> s "<" <> Blaze.fromText name+                              <> foldlMapWithKey buildAttr attr <> s ">"                               <> m <> f mempty mempty-                              <> s "</" <> name <> s ">",+                              <> s "</" <> Blaze.fromText name <> s ">",                       ())) --- | Make an HTML builder for+-- | Make an HTML builder for elements which have no ending tag. makeElementNoEnd :: Monad m-                 => Builder -- ^ Name.+                 => Text       -- ^ Name.                  -> HtmlT m () -- ^ A parent element. makeElementNoEnd name =-  HtmlT (return (\attr _ -> s "<" <> name <> foldlMapWithKey buildAttr attr <> s ">",+  HtmlT (return (\attr _ -> s "<" <> Blaze.fromText name+                            <> foldlMapWithKey buildAttr attr <> s ">",                  ()))  -- | Build and encode an attribute.@@ -302,9 +376,11 @@      then mempty      else s "=\"" <> encode val <> s "\"" +-- | Folding and monoidally appending attributes. foldlMapWithKey :: Monoid m => (k -> v -> m) -> HashMap k v -> m foldlMapWithKey f = M.foldlWithKey' (\m k v -> m <> f k v) mempty +-- | Convenience function for constructing builders. s :: String -> Builder s = Blaze.fromString {-# INLINE s #-}@@ -315,3 +391,7 @@ -- | Encode the given strict plain text to an encoded HTML builder. encode :: Text -> Builder encode = Blaze.fromHtmlEscapedText++-- | Encode the given strict plain text to an encoded HTML builder.+encodeLazy :: LT.Text -> Builder+encodeLazy = Blaze.fromHtmlEscapedLazyText
src/Lucid/Bootstrap.hs view
@@ -32,100 +32,68 @@ import Lucid.Base import Lucid.Html5 -import qualified Blaze.ByteString.Builder.Char.Utf8 as Blaze- -- | A grid container.-container_ :: Monad m => HtmlT m () -> HtmlT m ()+container_ :: Term arg result => arg -> result container_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "container "]+  termWith "div" [class_ " container "]  -- | A fluid grid container.-containerFluid_ :: Monad m => HtmlT m () -> HtmlT m ()+containerFluid_ :: Term arg result => arg -> result containerFluid_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "container-fluid "]+  termWith "div" [class_ " containerFluid "]  -- | A grid row.-row_ :: Monad m => HtmlT m () -> HtmlT m ()-row_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "row "]+row_ :: Term arg result => arg -> result+row_ = termWith "div" [class_ " row "]  -- | A fluid grid row.-rowFluid_ :: Monad m => HtmlT m () -> HtmlT m ()-rowFluid_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "row-fluid "]+rowFluid_ :: Term arg result => arg -> result+rowFluid_ = termWith "div" [class_ " rowFluid "]  -- | A span of 1 column.-span1_ :: Monad m => HtmlT m () -> HtmlT m ()-span1_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span1 "]+span1_ :: Term arg result => arg -> result+span1_ = termWith "div" [class_ " span1 "]  -- | A span of 2 columns.-span2_ :: Monad m => HtmlT m () -> HtmlT m ()-span2_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span2 "]+span2_ :: Term arg result => arg -> result+span2_ = termWith "div" [class_ " span2 "]  -- | A span of 3 columns.-span3_ :: Monad m => HtmlT m () -> HtmlT m ()-span3_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span3 "]+span3_ :: Term arg result => arg -> result+span3_ = termWith "div" [class_ " span3 "]  -- | A span of 4 columns.-span4_ :: Monad m => HtmlT m () -> HtmlT m ()-span4_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span4 "]+span4_ :: Term arg result => arg -> result+span4_ = termWith "div" [class_ " span4 "]  -- | A span of 5 columns.-span5_ :: Monad m => HtmlT m () -> HtmlT m ()-span5_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span5 "]+span5_ :: Term arg result => arg -> result+span5_ = termWith "div" [class_ " span5 "]  -- | A span of 6 columns.-span6_ :: Monad m => HtmlT m () -> HtmlT m ()-span6_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span6 "]+span6_ :: Term arg result => arg -> result+span6_ = termWith "div" [class_ " span6 "]  -- | A span of 7 columns.-span7_ :: Monad m => HtmlT m () -> HtmlT m ()-span7_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span7 "]+span7_ :: Term arg result => arg -> result+span7_ = termWith "div" [class_ " span7 "]  -- | A span of 8 columns.-span8_ :: Monad m => HtmlT m () -> HtmlT m ()-span8_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span8 "]+span8_ :: Term arg result => arg -> result+span8_ = termWith "div" [class_ " span8 "]  -- | A span of 9 columns.-span9_ :: Monad m => HtmlT m () -> HtmlT m ()-span9_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span9 "]+span9_ :: Term arg result => arg -> result+span9_ = termWith "div" [class_ " span9 "]  -- | A span of 10 columns.-span10_ :: Monad m => HtmlT m () -> HtmlT m ()-span10_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span10 "]+span10_ :: Term arg result => arg -> result+span10_ = termWith "div" [class_ " span10 "]  -- | A span of 11 columns.-span11_ :: Monad m => HtmlT m () -> HtmlT m ()-span11_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span11 "]+span11_ :: Term arg result => arg -> result+span11_ = termWith "div" [class_ " span11 "]  -- | A span of 12 columns.-span12_ :: Monad m => HtmlT m () -> HtmlT m ()-span12_ =-  with (makeElement (Blaze.fromString "div"))-       [class_ "span12 "]+span12_ :: Term arg result => arg -> result+span12_ = termWith "div" [class_ " span12 "]
src/Lucid/Html5.hs view
@@ -1,1082 +1,1082 @@ {-# LANGUAGE OverloadedStrings #-}-{-# OPTIONS -fno-warn-type-defaults #-}---- | Html5 terms.--module Lucid.Html5 where--import           Data.Text (Text)-import           Lucid.Base--import qualified Blaze.ByteString.Builder.Char.Utf8 as Blaze-import           Data.Monoid---- | @DOCTYPE@ element-doctype_  :: Monad m => HtmlT m ()-doctype_ = makeElementNoEnd (Blaze.fromString "!DOCTYPE HTML")---- | @DOCTYPE@ element + @html@ element-doctypehtml_  :: Monad m => HtmlT m () -> HtmlT m ()-doctypehtml_ m =-  do doctype_-     html_ m---- | @a@ element-a_  :: Monad m => HtmlT m () -> HtmlT m ()-a_ = makeElement (Blaze.fromString "a")---- | @abbr@ element-abbr_  :: Monad m => HtmlT m () -> HtmlT m ()-abbr_ = makeElement (Blaze.fromString "abbr")---- | @address@ element-address_  :: Monad m => HtmlT m () -> HtmlT m ()-address_ = makeElement (Blaze.fromString "address")---- | @area@ element-area_  :: Monad m => HtmlT m ()-area_ = makeElementNoEnd (Blaze.fromString "area")---- | @article@ element-article_  :: Monad m => HtmlT m () -> HtmlT m ()-article_ = makeElement (Blaze.fromString "article")---- | @aside@ element-aside_  :: Monad m => HtmlT m () -> HtmlT m ()-aside_ = makeElement (Blaze.fromString "aside")---- | @audio@ element-audio_  :: Monad m => HtmlT m () -> HtmlT m ()-audio_ = makeElement (Blaze.fromString "audio")---- | @b@ element-b_  :: Monad m => HtmlT m () -> HtmlT m ()-b_ = makeElement (Blaze.fromString "b")---- | @base@ element-base_  :: Monad m => HtmlT m ()-base_ = makeElementNoEnd (Blaze.fromString "base")---- | @bdo@ element-bdo_  :: Monad m => HtmlT m () -> HtmlT m ()-bdo_ = makeElement (Blaze.fromString "bdo")---- | @blockquote@ element-blockquote_  :: Monad m => HtmlT m () -> HtmlT m ()-blockquote_ = makeElement (Blaze.fromString "blockquote")---- | @body@ element-body_  :: Monad m => HtmlT m () -> HtmlT m ()-body_ = makeElement (Blaze.fromString "body")---- | @br@ element-br_  :: Monad m => HtmlT m ()-br_ = makeElementNoEnd (Blaze.fromString "br")---- | @button@ element-button_  :: Monad m => HtmlT m () -> HtmlT m ()-button_ = makeElement (Blaze.fromString "button")---- | @canvas@ element-canvas_  :: Monad m => HtmlT m () -> HtmlT m ()-canvas_ = makeElement (Blaze.fromString "canvas")---- | @caption@ element-caption_  :: Monad m => HtmlT m () -> HtmlT m ()-caption_ = makeElement (Blaze.fromString "caption")---- | @cite@ element or @cite@ attribute.-cite_ :: Mixed a r => a -> r-cite_ = mixed ("cite")---- | @code@ element-code_  :: Monad m => HtmlT m () -> HtmlT m ()-code_ = makeElement (Blaze.fromString "code")---- | @col@ element-col_  :: Monad m => HtmlT m ()-col_ = makeElementNoEnd (Blaze.fromString "col")---- | @colgroup@ element-colgroup_  :: Monad m => HtmlT m () -> HtmlT m ()-colgroup_ = makeElement (Blaze.fromString "colgroup")---- | @command@ element-command_  :: Monad m => HtmlT m () -> HtmlT m ()-command_ = makeElement (Blaze.fromString "command")---- | @datalist@ element-datalist_  :: Monad m => HtmlT m () -> HtmlT m ()-datalist_ = makeElement (Blaze.fromString "datalist")---- | @dd@ element-dd_  :: Monad m => HtmlT m () -> HtmlT m ()-dd_ = makeElement (Blaze.fromString "dd")---- | @del@ element-del_  :: Monad m => HtmlT m () -> HtmlT m ()-del_ = makeElement (Blaze.fromString "del")---- | @details@ element-details_  :: Monad m => HtmlT m () -> HtmlT m ()-details_ = makeElement (Blaze.fromString "details")---- | @dfn@ element-dfn_  :: Monad m => HtmlT m () -> HtmlT m ()-dfn_ = makeElement (Blaze.fromString "dfn")---- | @div@ element-div_  :: Monad m => HtmlT m () -> HtmlT m ()-div_ = makeElement (Blaze.fromString "div")---- | @dl@ element-dl_  :: Monad m => HtmlT m () -> HtmlT m ()-dl_ = makeElement (Blaze.fromString "dl")---- | @dt@ element-dt_  :: Monad m => HtmlT m () -> HtmlT m ()-dt_ = makeElement (Blaze.fromString "dt")---- | @em@ element-em_  :: Monad m => HtmlT m () -> HtmlT m ()-em_ = makeElement (Blaze.fromString "em")---- | @embed@ element-embed_  :: Monad m => HtmlT m ()-embed_ = makeElementNoEnd (Blaze.fromString "embed")---- | @fieldset@ element-fieldset_  :: Monad m => HtmlT m () -> HtmlT m ()-fieldset_ = makeElement (Blaze.fromString "fieldset")---- | @figcaption@ element-figcaption_  :: Monad m => HtmlT m () -> HtmlT m ()-figcaption_ = makeElement (Blaze.fromString "figcaption")---- | @figure@ element-figure_  :: Monad m => HtmlT m () -> HtmlT m ()-figure_ = makeElement (Blaze.fromString "figure")---- | @footer@ element-footer_  :: Monad m => HtmlT m () -> HtmlT m ()-footer_ = makeElement (Blaze.fromString "footer")---- | @form@ element or @form@ attribute-form_ :: Mixed a r => a -> r-form_ = mixed ("form")---- | @h1@ element-h1_  :: Monad m => HtmlT m () -> HtmlT m ()-h1_ = makeElement (Blaze.fromString "h1")---- | @h2@ element-h2_  :: Monad m => HtmlT m () -> HtmlT m ()-h2_ = makeElement (Blaze.fromString "h2")---- | @h3@ element-h3_  :: Monad m => HtmlT m () -> HtmlT m ()-h3_ = makeElement (Blaze.fromString "h3")---- | @h4@ element-h4_  :: Monad m => HtmlT m () -> HtmlT m ()-h4_ = makeElement (Blaze.fromString "h4")---- | @h5@ element-h5_  :: Monad m => HtmlT m () -> HtmlT m ()-h5_ = makeElement (Blaze.fromString "h5")---- | @h6@ element-h6_  :: Monad m => HtmlT m () -> HtmlT m ()-h6_ = makeElement (Blaze.fromString "h6")---- | @head@ element-head_  :: Monad m => HtmlT m () -> HtmlT m ()-head_ = makeElement (Blaze.fromString "head")---- | @header@ element-header_  :: Monad m => HtmlT m () -> HtmlT m ()-header_ = makeElement (Blaze.fromString "header")---- | @hgroup@ element-hgroup_  :: Monad m => HtmlT m () -> HtmlT m ()-hgroup_ = makeElement (Blaze.fromString "hgroup")---- | @hr@ element-hr_  :: Monad m => HtmlT m ()-hr_ = makeElementNoEnd (Blaze.fromString "hr")---- | @html@ element-html_  :: Monad m => HtmlT m () -> HtmlT m ()-html_ = makeElement (Blaze.fromString "html")---- | @i@ element-i_  :: Monad m => HtmlT m () -> HtmlT m ()-i_ = makeElement (Blaze.fromString "i")---- | @iframe@ element-iframe_  :: Monad m => HtmlT m () -> HtmlT m ()-iframe_ = makeElement (Blaze.fromString "iframe")---- | @img@ element-img_  :: Monad m => HtmlT m ()-img_ = makeElementNoEnd (Blaze.fromString "img")---- | @input@ element-input_  :: Monad m => HtmlT m ()-input_ = makeElementNoEnd (Blaze.fromString "input")---- | @ins@ element-ins_  :: Monad m => HtmlT m () -> HtmlT m ()-ins_ = makeElement (Blaze.fromString "ins")---- | @kbd@ element-kbd_  :: Monad m => HtmlT m () -> HtmlT m ()-kbd_ = makeElement (Blaze.fromString "kbd")---- | @keygen@ element-keygen_  :: Monad m => HtmlT m ()-keygen_ = makeElementNoEnd (Blaze.fromString "keygen")---- | @label@ element or @label@ attribute-label_ :: Mixed a r => a -> r-label_ = mixed ("label")---- | @legend@ element-legend_  :: Monad m => HtmlT m () -> HtmlT m ()-legend_ = makeElement (Blaze.fromString "legend")---- | @li@ element-li_  :: Monad m => HtmlT m () -> HtmlT m ()-li_ = makeElement (Blaze.fromString "li")---- | @link@ element-link_  :: Monad m => HtmlT m ()-link_ = makeElementNoEnd (Blaze.fromString "link")---- | @map@ element-map_  :: Monad m => HtmlT m () -> HtmlT m ()-map_ = makeElement (Blaze.fromString "map")---- | @mark@ element-mark_  :: Monad m => HtmlT m () -> HtmlT m ()-mark_ = makeElement (Blaze.fromString "mark")---- | @menu@ element-menu_  :: Monad m => HtmlT m () -> HtmlT m ()-menu_ = makeElement (Blaze.fromString "menu")---- | @menuitem@ element-menuitem_  :: Monad m => HtmlT m ()-menuitem_ = makeElementNoEnd (Blaze.fromString "menuitem")---- | @meta@ element-meta_  :: Monad m => HtmlT m ()-meta_ = makeElementNoEnd (Blaze.fromString "meta")---- | @meter@ element-meter_  :: Monad m => HtmlT m () -> HtmlT m ()-meter_ = makeElement (Blaze.fromString "meter")---- | @nav@ element-nav_  :: Monad m => HtmlT m () -> HtmlT m ()-nav_ = makeElement (Blaze.fromString "nav")---- | @noscript@ element-noscript_  :: Monad m => HtmlT m () -> HtmlT m ()-noscript_ = makeElement (Blaze.fromString "noscript")---- | @object@ element-object_  :: Monad m => HtmlT m () -> HtmlT m ()-object_ = makeElement (Blaze.fromString "object")---- | @ol@ element-ol_  :: Monad m => HtmlT m () -> HtmlT m ()-ol_ = makeElement (Blaze.fromString "ol")---- | @optgroup@ element-optgroup_  :: Monad m => HtmlT m () -> HtmlT m ()-optgroup_ = makeElement (Blaze.fromString "optgroup")---- | @option@ element-option_  :: Monad m => HtmlT m () -> HtmlT m ()-option_ = makeElement (Blaze.fromString "option")---- | @output@ element-output_  :: Monad m => HtmlT m () -> HtmlT m ()-output_ = makeElement (Blaze.fromString "output")---- | @p@ element-p_  :: Monad m => HtmlT m () -> HtmlT m ()-p_ = makeElement (Blaze.fromString "p")---- | @param@ element-param_  :: Monad m => HtmlT m ()-param_ = makeElementNoEnd (Blaze.fromString "param")---- | @pre@ element-pre_  :: Monad m => HtmlT m () -> HtmlT m ()-pre_ = makeElement (Blaze.fromString "pre")---- | @progress@ element-progress_  :: Monad m => HtmlT m () -> HtmlT m ()-progress_ = makeElement (Blaze.fromString "progress")---- | @q@ element-q_  :: Monad m => HtmlT m () -> HtmlT m ()-q_ = makeElement (Blaze.fromString "q")---- | @rp@ element-rp_  :: Monad m => HtmlT m () -> HtmlT m ()-rp_ = makeElement (Blaze.fromString "rp")---- | @rt@ element-rt_  :: Monad m => HtmlT m () -> HtmlT m ()-rt_ = makeElement (Blaze.fromString "rt")---- | @ruby@ element-ruby_  :: Monad m => HtmlT m () -> HtmlT m ()-ruby_ = makeElement (Blaze.fromString "ruby")---- | @samp@ element-samp_  :: Monad m => HtmlT m () -> HtmlT m ()-samp_ = makeElement (Blaze.fromString "samp")---- | @script@ element-script_  :: (ToHtml t,Monad m) => t -> HtmlT m ()-script_ = makeElement (Blaze.fromString "script") . toHtmlRaw---- | @section@ element-section_  :: Monad m => HtmlT m () -> HtmlT m ()-section_ = makeElement (Blaze.fromString "section")---- | @select@ element-select_  :: Monad m => HtmlT m () -> HtmlT m ()-select_ = makeElement (Blaze.fromString "select")---- | @small@ element-small_  :: Monad m => HtmlT m () -> HtmlT m ()-small_ = makeElement (Blaze.fromString "small")---- | @source@ element-source_  :: Monad m => HtmlT m ()-source_ = makeElementNoEnd (Blaze.fromString "source")---- | @span@ element or @span@ attribute-span_  :: Mixed a r => a -> r-span_ = mixed ("span")---- | @strong@ element-strong_  :: Monad m => HtmlT m () -> HtmlT m ()-strong_ = makeElement (Blaze.fromString "strong")---- | @style@ element or @style@ attribute-style_  :: MixedRaw a r => a -> r-style_ = mixedRaw "style"---- | @sub@ element-sub_  :: Monad m => HtmlT m () -> HtmlT m ()-sub_ = makeElement (Blaze.fromString "sub")---- | @summary@ element or @summary@ attribute-summary_  :: Mixed a r => a -> r-summary_ = mixed ("summary")---- | @sup@ element-sup_  :: Monad m => HtmlT m () -> HtmlT m ()-sup_ = makeElement (Blaze.fromString "sup")---- | @table@ element-table_  :: Monad m => HtmlT m () -> HtmlT m ()-table_ = makeElement (Blaze.fromString "table")---- | @tbody@ element-tbody_  :: Monad m => HtmlT m () -> HtmlT m ()-tbody_ = makeElement (Blaze.fromString "tbody")---- | @td@ element-td_  :: Monad m => HtmlT m () -> HtmlT m ()-td_ = makeElement (Blaze.fromString "td")---- | @textarea@ element-textarea_  :: Monad m => HtmlT m () -> HtmlT m ()-textarea_ = makeElement (Blaze.fromString "textarea")---- | @tfoot@ element-tfoot_  :: Monad m => HtmlT m () -> HtmlT m ()-tfoot_ = makeElement (Blaze.fromString "tfoot")---- | @th@ element-th_  :: Monad m => HtmlT m () -> HtmlT m ()-th_ = makeElement (Blaze.fromString "th")---- | @thead@ element-thead_  :: Monad m => HtmlT m () -> HtmlT m ()-thead_ = makeElement (Blaze.fromString "thead")---- | @time@ element-time_  :: Monad m => HtmlT m () -> HtmlT m ()-time_ = makeElement (Blaze.fromString "time")---- | @title@ element or @title@ attribute-title_  :: Mixed a r => a -> r-title_ = mixed ("title")---- | @tr@ element-tr_  :: Monad m => HtmlT m () -> HtmlT m ()-tr_ = makeElement (Blaze.fromString "tr")---- | @track@ element-track_  :: Monad m => HtmlT m ()-track_ = makeElementNoEnd (Blaze.fromString "track")---- | @ul@ element-ul_  :: Monad m => HtmlT m () -> HtmlT m ()-ul_ = makeElement (Blaze.fromString "ul")---- | @var@ element-var_  :: Monad m => HtmlT m () -> HtmlT m ()-var_ = makeElement (Blaze.fromString "var")---- | @video@ element-video_  :: Monad m => HtmlT m () -> HtmlT m ()-video_ = makeElement (Blaze.fromString "video")---- | @wbr@ element-wbr_  :: Monad m => HtmlT m ()-wbr_ = makeElementNoEnd (Blaze.fromString "wbr")---- | The @accept@ attribute.-accept_ :: Text -> (Text,Text)-accept_ = (,) ("accept")---- | The @acceptCharset@ attribute.-acceptCharset_ :: Text -> (Text,Text)-acceptCharset_ = (,) ("acceptCharset")---- | The @accesskey@ attribute.-accesskey_ :: Text -> (Text,Text)-accesskey_ = (,) ("accesskey")---- | The @action@ attribute.-action_ :: Text -> (Text,Text)-action_ = (,) ("action")---- | The @alt@ attribute.-alt_ :: Text -> (Text,Text)-alt_ = (,) ("alt")---- | The @async@ attribute.-async_ :: Text -> (Text,Text)-async_ = (,) ("async")---- | The @autocomplete@ attribute.-autocomplete_ :: Text -> (Text,Text)-autocomplete_ = (,) ("autocomplete")---- | The @autofocus@ attribute.-autofocus_ :: (Text,Text)-autofocus_ = (,) ("autofocus") mempty---- | The @autoplay@ attribute.-autoplay_ :: Text -> (Text,Text)-autoplay_ = (,) ("autoplay")---- | The @challenge@ attribute.-challenge_ :: Text -> (Text,Text)-challenge_ = (,) ("challenge")---- | The @charset@ attribute.-charset_ :: Text -> (Text,Text)-charset_ = (,) ("charset")---- | The @checked@ attribute.-checked_ :: (Text,Text)-checked_ = (,) ("checked") mempty---- | The @class@ attribute.-class_ :: Text -> (Text,Text)-class_ = (,) ("class")---- | The @cols@ attribute.-cols_ :: Text -> (Text,Text)-cols_ = (,) ("cols")---- | The @colspan@ attribute.-colspan_ :: Text -> (Text,Text)-colspan_ = (,) ("colspan")---- | The @content@ attribute.-content_ :: Text -> (Text,Text)-content_ = (,) ("content")---- | The @contenteditable@ attribute.-contenteditable_ :: Text -> (Text,Text)-contenteditable_ = (,) ("contenteditable")---- | The @contextmenu@ attribute.-contextmenu_ :: Text -> (Text,Text)-contextmenu_ = (,) ("contextmenu")---- | The @controls@ attribute.-controls_ :: Text -> (Text,Text)-controls_ = (,) ("controls")---- | The @coords@ attribute.-coords_ :: Text -> (Text,Text)-coords_ = (,) ("coords")---- | The @data@ attribute.-data_ :: Text -> (Text,Text)-data_ = (,) ("data")---- | The @datetime@ attribute.-datetime_ :: Text -> (Text,Text)-datetime_ = (,) ("datetime")---- | The @defer@ attribute.-defer_ :: Text -> (Text,Text)-defer_ = (,) ("defer")---- | The @dir@ attribute.-dir_ :: Text -> (Text,Text)-dir_ = (,) ("dir")---- | The @disabled@ attribute.-disabled_ :: Text -> (Text,Text)-disabled_ = (,) ("disabled")---- | The @draggable@ attribute.-draggable_ :: Text -> (Text,Text)-draggable_ = (,) ("draggable")---- | The @enctype@ attribute.-enctype_ :: Text -> (Text,Text)-enctype_ = (,) ("enctype")---- | The @for@ attribute.-for_ :: Text -> (Text,Text)-for_ = (,) ("for")---- | The @formaction@ attribute.-formaction_ :: Text -> (Text,Text)-formaction_ = (,) ("formaction")---- | The @formenctype@ attribute.-formenctype_ :: Text -> (Text,Text)-formenctype_ = (,) ("formenctype")---- | The @formmethod@ attribute.-formmethod_ :: Text -> (Text,Text)-formmethod_ = (,) ("formmethod")---- | The @formnovalidate@ attribute.-formnovalidate_ :: Text -> (Text,Text)-formnovalidate_ = (,) ("formnovalidate")---- | The @formtarget@ attribute.-formtarget_ :: Text -> (Text,Text)-formtarget_ = (,) ("formtarget")---- | The @headers@ attribute.-headers_ :: Text -> (Text,Text)-headers_ = (,) ("headers")---- | The @height@ attribute.-height_ :: Text -> (Text,Text)-height_ = (,) ("height")---- | The @hidden@ attribute.-hidden_ :: Text -> (Text,Text)-hidden_ = (,) ("hidden")---- | The @high@ attribute.-high_ :: Text -> (Text,Text)-high_ = (,) ("high")---- | The @href@ attribute.-href_ :: Text -> (Text,Text)-href_ = (,) ("href")---- | The @hreflang@ attribute.-hreflang_ :: Text -> (Text,Text)-hreflang_ = (,) ("hreflang")---- | The @httpEquiv@ attribute.-httpEquiv_ :: Text -> (Text,Text)-httpEquiv_ = (,) ("httpEquiv")---- | The @icon@ attribute.-icon_ :: Text -> (Text,Text)-icon_ = (,) ("icon")---- | The @id@ attribute.-id_ :: Text -> (Text,Text)-id_ = (,) ("id")---- | The @ismap@ attribute.-ismap_ :: Text -> (Text,Text)-ismap_ = (,) ("ismap")---- | The @item@ attribute.-item_ :: Text -> (Text,Text)-item_ = (,) ("item")---- | The @itemprop@ attribute.-itemprop_ :: Text -> (Text,Text)-itemprop_ = (,) ("itemprop")---- | The @keytype@ attribute.-keytype_ :: Text -> (Text,Text)-keytype_ = (,) ("keytype")---- | The @lang@ attribute.-lang_ :: Text -> (Text,Text)-lang_ = (,) ("lang")---- | The @list@ attribute.-list_ :: Text -> (Text,Text)-list_ = (,) ("list")---- | The @loop@ attribute.-loop_ :: Text -> (Text,Text)-loop_ = (,) ("loop")---- | The @low@ attribute.-low_ :: Text -> (Text,Text)-low_ = (,) ("low")---- | The @manifest@ attribute.-manifest_ :: Text -> (Text,Text)-manifest_ = (,) ("manifest")---- | The @max@ attribute.-max_ :: Text -> (Text,Text)-max_ = (,) ("max")---- | The @maxlength@ attribute.-maxlength_ :: Text -> (Text,Text)-maxlength_ = (,) ("maxlength")---- | The @media@ attribute.-media_ :: Text -> (Text,Text)-media_ = (,) ("media")---- | The @method@ attribute.-method_ :: Text -> (Text,Text)-method_ = (,) ("method")---- | The @min@ attribute.-min_ :: Text -> (Text,Text)-min_ = (,) ("min")---- | The @multiple@ attribute.-multiple_ :: Text -> (Text,Text)-multiple_ = (,) ("multiple")---- | The @name@ attribute.-name_ :: Text -> (Text,Text)-name_ = (,) ("name")---- | The @novalidate@ attribute.-novalidate_ :: Text -> (Text,Text)-novalidate_ = (,) ("novalidate")---- | The @onbeforeonload@ attribute.-onbeforeonload_ :: Text -> (Text,Text)-onbeforeonload_ = (,) ("onbeforeonload")---- | The @onbeforeprint@ attribute.-onbeforeprint_ :: Text -> (Text,Text)-onbeforeprint_ = (,) ("onbeforeprint")---- | The @onblur@ attribute.-onblur_ :: Text -> (Text,Text)-onblur_ = (,) ("onblur")---- | The @oncanplay@ attribute.-oncanplay_ :: Text -> (Text,Text)-oncanplay_ = (,) ("oncanplay")---- | The @oncanplaythrough@ attribute.-oncanplaythrough_ :: Text -> (Text,Text)-oncanplaythrough_ = (,) ("oncanplaythrough")---- | The @onchange@ attribute.-onchange_ :: Text -> (Text,Text)-onchange_ = (,) ("onchange")---- | The @onclick@ attribute.-onclick_ :: Text -> (Text,Text)-onclick_ = (,) ("onclick")---- | The @oncontextmenu@ attribute.-oncontextmenu_ :: Text -> (Text,Text)-oncontextmenu_ = (,) ("oncontextmenu")---- | The @ondblclick@ attribute.-ondblclick_ :: Text -> (Text,Text)-ondblclick_ = (,) ("ondblclick")---- | The @ondrag@ attribute.-ondrag_ :: Text -> (Text,Text)-ondrag_ = (,) ("ondrag")---- | The @ondragend@ attribute.-ondragend_ :: Text -> (Text,Text)-ondragend_ = (,) ("ondragend")---- | The @ondragenter@ attribute.-ondragenter_ :: Text -> (Text,Text)-ondragenter_ = (,) ("ondragenter")---- | The @ondragleave@ attribute.-ondragleave_ :: Text -> (Text,Text)-ondragleave_ = (,) ("ondragleave")---- | The @ondragover@ attribute.-ondragover_ :: Text -> (Text,Text)-ondragover_ = (,) ("ondragover")---- | The @ondragstart@ attribute.-ondragstart_ :: Text -> (Text,Text)-ondragstart_ = (,) ("ondragstart")---- | The @ondrop@ attribute.-ondrop_ :: Text -> (Text,Text)-ondrop_ = (,) ("ondrop")---- | The @ondurationchange@ attribute.-ondurationchange_ :: Text -> (Text,Text)-ondurationchange_ = (,) ("ondurationchange")---- | The @onemptied@ attribute.-onemptied_ :: Text -> (Text,Text)-onemptied_ = (,) ("onemptied")---- | The @onended@ attribute.-onended_ :: Text -> (Text,Text)-onended_ = (,) ("onended")---- | The @onerror@ attribute.-onerror_ :: Text -> (Text,Text)-onerror_ = (,) ("onerror")---- | The @onfocus@ attribute.-onfocus_ :: Text -> (Text,Text)-onfocus_ = (,) ("onfocus")---- | The @onformchange@ attribute.-onformchange_ :: Text -> (Text,Text)-onformchange_ = (,) ("onformchange")---- | The @onforminput@ attribute.-onforminput_ :: Text -> (Text,Text)-onforminput_ = (,) ("onforminput")---- | The @onhaschange@ attribute.-onhaschange_ :: Text -> (Text,Text)-onhaschange_ = (,) ("onhaschange")---- | The @oninput@ attribute.-oninput_ :: Text -> (Text,Text)-oninput_ = (,) ("oninput")---- | The @oninvalid@ attribute.-oninvalid_ :: Text -> (Text,Text)-oninvalid_ = (,) ("oninvalid")---- | The @onkeydown@ attribute.-onkeydown_ :: Text -> (Text,Text)-onkeydown_ = (,) ("onkeydown")---- | The @onkeyup@ attribute.-onkeyup_ :: Text -> (Text,Text)-onkeyup_ = (,) ("onkeyup")---- | The @onload@ attribute.-onload_ :: Text -> (Text,Text)-onload_ = (,) ("onload")---- | The @onloadeddata@ attribute.-onloadeddata_ :: Text -> (Text,Text)-onloadeddata_ = (,) ("onloadeddata")---- | The @onloadedmetadata@ attribute.-onloadedmetadata_ :: Text -> (Text,Text)-onloadedmetadata_ = (,) ("onloadedmetadata")---- | The @onloadstart@ attribute.-onloadstart_ :: Text -> (Text,Text)-onloadstart_ = (,) ("onloadstart")---- | The @onmessage@ attribute.-onmessage_ :: Text -> (Text,Text)-onmessage_ = (,) ("onmessage")---- | The @onmousedown@ attribute.-onmousedown_ :: Text -> (Text,Text)-onmousedown_ = (,) ("onmousedown")---- | The @onmousemove@ attribute.-onmousemove_ :: Text -> (Text,Text)-onmousemove_ = (,) ("onmousemove")---- | The @onmouseout@ attribute.-onmouseout_ :: Text -> (Text,Text)-onmouseout_ = (,) ("onmouseout")---- | The @onmouseover@ attribute.-onmouseover_ :: Text -> (Text,Text)-onmouseover_ = (,) ("onmouseover")---- | The @onmouseup@ attribute.-onmouseup_ :: Text -> (Text,Text)-onmouseup_ = (,) ("onmouseup")---- | The @onmousewheel@ attribute.-onmousewheel_ :: Text -> (Text,Text)-onmousewheel_ = (,) ("onmousewheel")---- | The @ononline@ attribute.-ononline_ :: Text -> (Text,Text)-ononline_ = (,) ("ononline")---- | The @onpagehide@ attribute.-onpagehide_ :: Text -> (Text,Text)-onpagehide_ = (,) ("onpagehide")---- | The @onpageshow@ attribute.-onpageshow_ :: Text -> (Text,Text)-onpageshow_ = (,) ("onpageshow")---- | The @onpause@ attribute.-onpause_ :: Text -> (Text,Text)-onpause_ = (,) ("onpause")---- | The @onplay@ attribute.-onplay_ :: Text -> (Text,Text)-onplay_ = (,) ("onplay")---- | The @onplaying@ attribute.-onplaying_ :: Text -> (Text,Text)-onplaying_ = (,) ("onplaying")---- | The @onprogress@ attribute.-onprogress_ :: Text -> (Text,Text)-onprogress_ = (,) ("onprogress")---- | The @onpropstate@ attribute.-onpropstate_ :: Text -> (Text,Text)-onpropstate_ = (,) ("onpropstate")---- | The @onratechange@ attribute.-onratechange_ :: Text -> (Text,Text)-onratechange_ = (,) ("onratechange")---- | The @onreadystatechange@ attribute.-onreadystatechange_ :: Text -> (Text,Text)-onreadystatechange_ = (,) ("onreadystatechange")---- | The @onredo@ attribute.-onredo_ :: Text -> (Text,Text)-onredo_ = (,) ("onredo")---- | The @onresize@ attribute.-onresize_ :: Text -> (Text,Text)-onresize_ = (,) ("onresize")---- | The @onscroll@ attribute.-onscroll_ :: Text -> (Text,Text)-onscroll_ = (,) ("onscroll")---- | The @onseeked@ attribute.-onseeked_ :: Text -> (Text,Text)-onseeked_ = (,) ("onseeked")---- | The @onseeking@ attribute.-onseeking_ :: Text -> (Text,Text)-onseeking_ = (,) ("onseeking")---- | The @onselect@ attribute.-onselect_ :: Text -> (Text,Text)-onselect_ = (,) ("onselect")---- | The @onstalled@ attribute.-onstalled_ :: Text -> (Text,Text)-onstalled_ = (,) ("onstalled")---- | The @onstorage@ attribute.-onstorage_ :: Text -> (Text,Text)-onstorage_ = (,) ("onstorage")---- | The @onsubmit@ attribute.-onsubmit_ :: Text -> (Text,Text)-onsubmit_ = (,) ("onsubmit")---- | The @onsuspend@ attribute.-onsuspend_ :: Text -> (Text,Text)-onsuspend_ = (,) ("onsuspend")---- | The @ontimeupdate@ attribute.-ontimeupdate_ :: Text -> (Text,Text)-ontimeupdate_ = (,) ("ontimeupdate")---- | The @onundo@ attribute.-onundo_ :: Text -> (Text,Text)-onundo_ = (,) ("onundo")---- | The @onunload@ attribute.-onunload_ :: Text -> (Text,Text)-onunload_ = (,) ("onunload")---- | The @onvolumechange@ attribute.-onvolumechange_ :: Text -> (Text,Text)-onvolumechange_ = (,) ("onvolumechange")---- | The @onwaiting@ attribute.-onwaiting_ :: Text -> (Text,Text)-onwaiting_ = (,) ("onwaiting")---- | The @open@ attribute.-open_ :: Text -> (Text,Text)-open_ = (,) ("open")---- | The @optimum@ attribute.-optimum_ :: Text -> (Text,Text)-optimum_ = (,) ("optimum")---- | The @pattern@ attribute.-pattern_ :: Text -> (Text,Text)-pattern_ = (,) ("pattern")---- | The @ping@ attribute.-ping_ :: Text -> (Text,Text)-ping_ = (,) ("ping")---- | The @placeholder@ attribute.-placeholder_ :: Text -> (Text,Text)-placeholder_ = (,) ("placeholder")---- | The @preload@ attribute.-preload_ :: Text -> (Text,Text)-preload_ = (,) ("preload")---- | The @pubdate@ attribute.-pubdate_ :: Text -> (Text,Text)-pubdate_ = (,) ("pubdate")---- | The @radiogroup@ attribute.-radiogroup_ :: Text -> (Text,Text)-radiogroup_ = (,) ("radiogroup")---- | The @readonly@ attribute.-readonly_ :: Text -> (Text,Text)-readonly_ = (,) ("readonly")---- | The @rel@ attribute.-rel_ :: Text -> (Text,Text)-rel_ = (,) ("rel")---- | The @required@ attribute.-required_ :: Text -> (Text,Text)-required_ = (,) ("required")---- | The @reversed@ attribute.-reversed_ :: Text -> (Text,Text)-reversed_ = (,) ("reversed")---- | The @rows@ attribute.-rows_ :: Text -> (Text,Text)-rows_ = (,) ("rows")---- | The @rowspan@ attribute.-rowspan_ :: Text -> (Text,Text)-rowspan_ = (,) ("rowspan")---- | The @sandbox@ attribute.-sandbox_ :: Text -> (Text,Text)-sandbox_ = (,) ("sandbox")---- | The @scope@ attribute.-scope_ :: Text -> (Text,Text)-scope_ = (,) ("scope")---- | The @scoped@ attribute.-scoped_ :: Text -> (Text,Text)-scoped_ = (,) ("scoped")---- | The @seamless@ attribute.-seamless_ :: Text -> (Text,Text)-seamless_ = (,) ("seamless")---- | The @selected@ attribute.-selected_ :: Text -> (Text,Text)-selected_ = (,) ("selected")---- | The @shape@ attribute.-shape_ :: Text -> (Text,Text)-shape_ = (,) ("shape")---- | The @size@ attribute.-size_ :: Text -> (Text,Text)-size_ = (,) ("size")---- | The @sizes@ attribute.-sizes_ :: Text -> (Text,Text)-sizes_ = (,) ("sizes")---- | The @spellcheck@ attribute.-spellcheck_ :: Text -> (Text,Text)-spellcheck_ = (,) ("spellcheck")---- | The @src@ attribute.-src_ :: Text -> (Text,Text)-src_ = (,) ("src")---- | The @srcdoc@ attribute.-srcdoc_ :: Text -> (Text,Text)-srcdoc_ = (,) ("srcdoc")---- | The @start@ attribute.-start_ :: Text -> (Text,Text)-start_ = (,) ("start")---- | The @step@ attribute.-step_ :: Text -> (Text,Text)-step_ = (,) ("step")---- | The @subject@ attribute.-subject_ :: Text -> (Text,Text)-subject_ = (,) ("subject")---- | The @tabindex@ attribute.-tabindex_ :: Text -> (Text,Text)-tabindex_ = (,) ("tabindex")---- | The @target@ attribute.-target_ :: Text -> (Text,Text)-target_ = (,) ("target")---- | The @type@ attribute.-type_ :: Text -> (Text,Text)-type_ = (,) ("type")---- | The @usemap@ attribute.-usemap_ :: Text -> (Text,Text)-usemap_ = (,) ("usemap")---- | The @value@ attribute.-value_ :: Text -> (Text,Text)-value_ = (,) ("value")---- | The @width@ attribute.-width_ :: Text -> (Text,Text)-width_ = (,) ("width")---- | The @wrap@ attribute.-wrap_ :: Text -> (Text,Text)-wrap_ = (,) ("wrap")---- | The @xmlns@ attribute.-xmlns_ :: Text -> (Text,Text)-xmlns_ = (,) ("xmlns")+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# OPTIONS -fno-warn-type-defaults #-}++-- | Html5 terms.++module Lucid.Html5 where++import           Lucid.Base++import           Data.Monoid+import           Data.Text (Text)++-- | @DOCTYPE@ element+doctype_ :: Monad m => HtmlT m ()+doctype_ = makeElementNoEnd "!DOCTYPE HTML"++-- | @DOCTYPE@ element + @html@ element+doctypehtml_ :: Monad m => HtmlT m () -> HtmlT m ()+doctypehtml_ m =+  do doctype_+     html_ m++-- | @a@ element+a_ :: Term arg result => arg -> result+a_ = term "a"++-- | @abbr@ element+abbr_ :: Term arg result => arg -> result+abbr_ = term "abbr"++-- | @address@ element+address_ :: Term arg result => arg -> result+address_ = term "address"++-- | @area@ element+area_ :: Monad m => [Attribute] -> HtmlT m ()+area_ = with (makeElementNoEnd "area")++-- | @article@ element+article_ :: Term arg result => arg -> result+article_ = term "article"++-- | @aside@ element+aside_ :: Term arg result => arg -> result+aside_ = term "aside"++-- | @audio@ element+audio_ :: Term arg result => arg -> result+audio_ = term "audio"++-- | @b@ element+b_ :: Term arg result => arg -> result+b_ = term "b"++-- | @base@ element+base_ :: Monad m => [Attribute] -> HtmlT m ()+base_ = with (makeElementNoEnd "base")++-- | @bdo@ element+bdo_ :: Term arg result => arg -> result+bdo_ = term "bdo"++-- | @blockquote@ element+blockquote_ :: Term arg result => arg -> result+blockquote_ = term "blockquote"++-- | @body@ element+body_ :: Term arg result => arg -> result+body_ = term "body"++-- | @br@ element+br_ :: Monad m => [Attribute] -> HtmlT m ()+br_ = with (makeElementNoEnd "br")++-- | @button@ element+button_ :: Term arg result => arg -> result+button_ = term "button"++-- | @canvas@ element+canvas_ :: Term arg result => arg -> result+canvas_ = term "canvas"++-- | @caption@ element+caption_ :: Term arg result => arg -> result+caption_ = term "caption"++-- | @cite@ element or @cite@ attribute.+cite_ :: Term arg result => arg -> result+cite_ = term "cite"++-- | @code@ element+code_ :: Term arg result => arg -> result+code_ = term "code"++-- | @col@ element+col_ :: Monad m => [Attribute] -> HtmlT m ()+col_ = with (makeElementNoEnd "col")++-- | @colgroup@ element+colgroup_ :: Term arg result => arg -> result+colgroup_ = term "colgroup"++-- | @command@ element+command_ :: Term arg result => arg -> result+command_ = term "command"++-- | @datalist@ element+datalist_ :: Term arg result => arg -> result+datalist_ = term "datalist"++-- | @dd@ element+dd_ :: Term arg result => arg -> result+dd_ = term "dd"++-- | @del@ element+del_ :: Term arg result => arg -> result+del_ = term "del"++-- | @details@ element+details_ :: Term arg result => arg -> result+details_ = term "details"++-- | @dfn@ element+dfn_ :: Term arg result => arg -> result+dfn_ = term "dfn"++-- | @div@ element+div_ :: Term arg result => arg -> result+div_ = term "div"++-- | @dl@ element+dl_ :: Term arg result => arg -> result+dl_ = term "dl"++-- | @dt@ element+dt_ :: Term arg result => arg -> result+dt_ = term "dt"++-- | @em@ element+em_ :: Term arg result => arg -> result+em_ = term "em"++-- | @embed@ element+embed_ :: Monad m => [Attribute] -> HtmlT m ()+embed_ = with (makeElementNoEnd "embed")++-- | @fieldset@ element+fieldset_ :: Term arg result => arg -> result+fieldset_ = term "fieldset"++-- | @figcaption@ element+figcaption_ :: Term arg result => arg -> result+figcaption_ = term "figcaption"++-- | @figure@ element+figure_ :: Term arg result => arg -> result+figure_ = term "figure"++-- | @footer@ element+footer_ :: Term arg result => arg -> result+footer_ = term "footer"++-- | @form@ element or @form@ attribute+form_ :: Term arg result => arg -> result+form_ = term "form"++-- | @h1@ element+h1_ :: Term arg result => arg -> result+h1_ = term "h1"++-- | @h2@ element+h2_ :: Term arg result => arg -> result+h2_ = term "h2"++-- | @h3@ element+h3_ :: Term arg result => arg -> result+h3_ = term "h3"++-- | @h4@ element+h4_ :: Term arg result => arg -> result+h4_ = term "h4"++-- | @h5@ element+h5_ :: Term arg result => arg -> result+h5_ = term "h5"++-- | @h6@ element+h6_ :: Term arg result => arg -> result+h6_ = term "h6"++-- | @head@ element+head_ :: Term arg result => arg -> result+head_ = term "head"++-- | @header@ element+header_ :: Term arg result => arg -> result+header_ = term "header"++-- | @hgroup@ element+hgroup_ :: Term arg result => arg -> result+hgroup_ = term "hgroup"++-- | @hr@ element+hr_ :: Monad m => [Attribute] -> HtmlT m ()+hr_ = with (makeElementNoEnd "hr")++-- | @html@ element+html_ :: Term arg result => arg -> result+html_ = term "html"++-- | @i@ element+i_ :: Term arg result => arg -> result+i_ = term "i"++-- | @iframe@ element+iframe_ :: Term arg result => arg -> result+iframe_ = term "iframe"++-- | @img@ element+img_ :: Monad m => [Attribute] -> HtmlT m ()+img_ = with (makeElementNoEnd "img")++-- | @input@ element+input_ :: Monad m => [Attribute] -> HtmlT m ()+input_ = with (makeElementNoEnd "input")++-- | @ins@ element+ins_ :: Term arg result => arg -> result+ins_ = term "ins"++-- | @kbd@ element+kbd_ :: Term arg result => arg -> result+kbd_ = term "kbd"++-- | @keygen@ element+keygen_ :: Monad m => [Attribute] -> HtmlT m ()+keygen_ = with (makeElementNoEnd "keygen")++-- | @label@ element or @label@ attribute+label_ :: Term arg result => arg -> result+label_ = term "label"++-- | @legend@ element+legend_ :: Term arg result => arg -> result+legend_ = term "legend"++-- | @li@ element+li_ :: Term arg result => arg -> result+li_ = term "li"++-- | @link@ element+link_ :: Monad m => [Attribute] -> HtmlT m ()+link_ = with (makeElementNoEnd "link")++-- | @map@ element+map_ :: Term arg result => arg -> result+map_ = term "map"++-- | @mark@ element+mark_ :: Term arg result => arg -> result+mark_ = term "mark"++-- | @menu@ element+menu_ :: Term arg result => arg -> result+menu_ = term "menu"++-- | @menuitem@ element+menuitem_ :: Monad m => [Attribute] -> HtmlT m ()+menuitem_ = with (makeElementNoEnd "menuitem")++-- | @meta@ element+meta_ :: Monad m => [Attribute] -> HtmlT m ()+meta_ = with (makeElementNoEnd "meta")++-- | @meter@ element+meter_ :: Term arg result => arg -> result+meter_ = term "meter"++-- | @nav@ element+nav_ :: Term arg result => arg -> result+nav_ = term "nav"++-- | @noscript@ element+noscript_ :: Term arg result => arg -> result+noscript_ = term "noscript"++-- | @object@ element+object_ :: Term arg result => arg -> result+object_ = term "object"++-- | @ol@ element+ol_ :: Term arg result => arg -> result+ol_ = term "ol"++-- | @optgroup@ element+optgroup_ :: Term arg result => arg -> result+optgroup_ = term "optgroup"++-- | @option@ element+option_ :: Term arg result => arg -> result+option_ = term "option"++-- | @output@ element+output_ :: Term arg result => arg -> result+output_ = term "output"++-- | @p@ element+p_ :: Term arg result => arg -> result+p_ = term "p"++-- | @param@ element+param_ :: Monad m => [Attribute] -> HtmlT m ()+param_ = with (makeElementNoEnd "param")++-- | @pre@ element+pre_ :: Term arg result => arg -> result+pre_ = term "pre"++-- | @progress@ element+progress_ :: Term arg result => arg -> result+progress_ = term "progress"++-- | @q@ element+q_ :: Term arg result => arg -> result+q_ = term "q"++-- | @rp@ element+rp_ :: Term arg result => arg -> result+rp_ = term "rp"++-- | @rt@ element+rt_ :: Term arg result => arg -> result+rt_ = term "rt"++-- | @ruby@ element+ruby_ :: Term arg result => arg -> result+ruby_ = term "ruby"++-- | @samp@ element+samp_ :: Term arg result => arg -> result+samp_ = term "samp"++-- | @script@ element+script_ :: TermRaw arg result => arg -> result+script_ = termRaw "script"++-- | @section@ element+section_ :: Term arg result => arg -> result+section_ = term "section"++-- | @select@ element+select_ :: Term arg result => arg -> result+select_ = term "select"++-- | @small@ element+small_ :: Term arg result => arg -> result+small_ = term "small"++-- | @source@ element+source_ :: Monad m => [Attribute] -> HtmlT m ()+source_ = with (makeElementNoEnd "source")++-- | @span@ element or @span@ attribute+span_ :: Term arg result => arg -> result+span_ = term "span"++-- | @strong@ element+strong_ :: Term arg result => arg -> result+strong_ = term "strong"++-- | @style@ element or @style@ attribute+style_ :: TermRaw arg result => arg -> result+style_ = termRaw "style"++-- | @sub@ element+sub_ :: Term arg result => arg -> result+sub_ = term "sub"++-- | @summary@ element or @summary@ attribute+summary_ :: Term arg result => arg -> result+summary_ = term "summary"++-- | @sup@ element+sup_ :: Term arg result => arg -> result+sup_ = term "sup"++-- | @table@ element+table_ :: Term arg result => arg -> result+table_ = term "table"++-- | @tbody@ element+tbody_ :: Term arg result => arg -> result+tbody_ = term "tbody"++-- | @td@ element+td_ :: Term arg result => arg -> result+td_ = term "td"++-- | @textarea@ element+textarea_ :: Term arg result => arg -> result+textarea_ = term "textarea"++-- | @tfoot@ element+tfoot_ :: Term arg result => arg -> result+tfoot_ = term "tfoot"++-- | @th@ element+th_ :: Term arg result => arg -> result+th_ = term "th"++-- | @thead@ element+thead_ :: Term arg result => arg -> result+thead_ = term "thead"++-- | @time@ element+time_ :: Term arg result => arg -> result+time_ = term "time"++-- | @title@ element or @title@ attribute+title_ :: Term arg result => arg -> result+title_ = term "title"++-- | @tr@ element+tr_ :: Term arg result => arg -> result+tr_ = term "tr"++-- | @track@ element+track_ :: Monad m => [Attribute] -> HtmlT m ()+track_ = with (makeElementNoEnd "track")++-- | @ul@ element+ul_ :: Term arg result => arg -> result+ul_ = term "ul"++-- | @var@ element+var_ :: Term arg result => arg -> result+var_ = term "var"++-- | @video@ element+video_ :: Term arg result => arg -> result+video_ = term "video"++-- | @wbr@ element+wbr_ :: Monad m => [Attribute] -> HtmlT m ()+wbr_ = with (makeElementNoEnd "wbr")++-- | The @accept@ attribute.+accept_ :: Text -> Attribute+accept_ = makeAttribute "accept"++-- | The @acceptCharset@ attribute.+acceptCharset_ :: Text -> Attribute+acceptCharset_ = makeAttribute "acceptCharset"++-- | The @accesskey@ attribute.+accesskey_ :: Text -> Attribute+accesskey_ = makeAttribute "accesskey"++-- | The @action@ attribute.+action_ :: Text -> Attribute+action_ = makeAttribute "action"++-- | The @alt@ attribute.+alt_ :: Text -> Attribute+alt_ = makeAttribute "alt"++-- | The @async@ attribute.+async_ :: Text -> Attribute+async_ = makeAttribute "async"++-- | The @autocomplete@ attribute.+autocomplete_ :: Text -> Attribute+autocomplete_ = makeAttribute "autocomplete"++-- | The @autofocus@ attribute.+autofocus_ :: Attribute+autofocus_ = makeAttribute "autofocus" mempty++-- | The @autoplay@ attribute.+autoplay_ :: Text -> Attribute+autoplay_ = makeAttribute "autoplay"++-- | The @challenge@ attribute.+challenge_ :: Text -> Attribute+challenge_ = makeAttribute "challenge"++-- | The @charset@ attribute.+charset_ :: Text -> Attribute+charset_ = makeAttribute "charset"++-- | The @checked@ attribute.+checked_ :: Attribute+checked_ = makeAttribute "checked" mempty++-- | The @class@ attribute.+class_ :: Text -> Attribute+class_ = makeAttribute "class"++-- | The @cols@ attribute.+cols_ :: Text -> Attribute+cols_ = makeAttribute "cols"++-- | The @colspan@ attribute.+colspan_ :: Text -> Attribute+colspan_ = makeAttribute "colspan"++-- | The @content@ attribute.+content_ :: Text -> Attribute+content_ = makeAttribute "content"++-- | The @contenteditable@ attribute.+contenteditable_ :: Text -> Attribute+contenteditable_ = makeAttribute "contenteditable"++-- | The @contextmenu@ attribute.+contextmenu_ :: Text -> Attribute+contextmenu_ = makeAttribute "contextmenu"++-- | The @controls@ attribute.+controls_ :: Text -> Attribute+controls_ = makeAttribute "controls"++-- | The @coords@ attribute.+coords_ :: Text -> Attribute+coords_ = makeAttribute "coords"++-- | The @data@ attribute.+data_ :: Text -> Text -> Attribute+data_ name = makeAttribute ("data-" <> name)++-- | The @datetime@ attribute.+datetime_ :: Text -> Attribute+datetime_ = makeAttribute "datetime"++-- | The @defer@ attribute.+defer_ :: Text -> Attribute+defer_ = makeAttribute "defer"++-- | The @dir@ attribute.+dir_ :: Text -> Attribute+dir_ = makeAttribute "dir"++-- | The @disabled@ attribute.+disabled_ :: Text -> Attribute+disabled_ = makeAttribute "disabled"++-- | The @draggable@ attribute.+draggable_ :: Text -> Attribute+draggable_ = makeAttribute "draggable"++-- | The @enctype@ attribute.+enctype_ :: Text -> Attribute+enctype_ = makeAttribute "enctype"++-- | The @for@ attribute.+for_ :: Text -> Attribute+for_ = makeAttribute "for"++-- | The @formaction@ attribute.+formaction_ :: Text -> Attribute+formaction_ = makeAttribute "formaction"++-- | The @formenctype@ attribute.+formenctype_ :: Text -> Attribute+formenctype_ = makeAttribute "formenctype"++-- | The @formmethod@ attribute.+formmethod_ :: Text -> Attribute+formmethod_ = makeAttribute "formmethod"++-- | The @formnovalidate@ attribute.+formnovalidate_ :: Text -> Attribute+formnovalidate_ = makeAttribute "formnovalidate"++-- | The @formtarget@ attribute.+formtarget_ :: Text -> Attribute+formtarget_ = makeAttribute "formtarget"++-- | The @headers@ attribute.+headers_ :: Text -> Attribute+headers_ = makeAttribute "headers"++-- | The @height@ attribute.+height_ :: Text -> Attribute+height_ = makeAttribute "height"++-- | The @hidden@ attribute.+hidden_ :: Text -> Attribute+hidden_ = makeAttribute "hidden"++-- | The @high@ attribute.+high_ :: Text -> Attribute+high_ = makeAttribute "high"++-- | The @href@ attribute.+href_ :: Text -> Attribute+href_ = makeAttribute "href"++-- | The @hreflang@ attribute.+hreflang_ :: Text -> Attribute+hreflang_ = makeAttribute "hreflang"++-- | The @httpEquiv@ attribute.+httpEquiv_ :: Text -> Attribute+httpEquiv_ = makeAttribute "httpEquiv"++-- | The @icon@ attribute.+icon_ :: Text -> Attribute+icon_ = makeAttribute "icon"++-- | The @id@ attribute.+id_ :: Text -> Attribute+id_ = makeAttribute "id"++-- | The @ismap@ attribute.+ismap_ :: Text -> Attribute+ismap_ = makeAttribute "ismap"++-- | The @item@ attribute.+item_ :: Text -> Attribute+item_ = makeAttribute "item"++-- | The @itemprop@ attribute.+itemprop_ :: Text -> Attribute+itemprop_ = makeAttribute "itemprop"++-- | The @keytype@ attribute.+keytype_ :: Text -> Attribute+keytype_ = makeAttribute "keytype"++-- | The @lang@ attribute.+lang_ :: Text -> Attribute+lang_ = makeAttribute "lang"++-- | The @list@ attribute.+list_ :: Text -> Attribute+list_ = makeAttribute "list"++-- | The @loop@ attribute.+loop_ :: Text -> Attribute+loop_ = makeAttribute "loop"++-- | The @low@ attribute.+low_ :: Text -> Attribute+low_ = makeAttribute "low"++-- | The @manifest@ attribute.+manifest_ :: Text -> Attribute+manifest_ = makeAttribute "manifest"++-- | The @max@ attribute.+max_ :: Text -> Attribute+max_ = makeAttribute "max"++-- | The @maxlength@ attribute.+maxlength_ :: Text -> Attribute+maxlength_ = makeAttribute "maxlength"++-- | The @media@ attribute.+media_ :: Text -> Attribute+media_ = makeAttribute "media"++-- | The @method@ attribute.+method_ :: Text -> Attribute+method_ = makeAttribute "method"++-- | The @min@ attribute.+min_ :: Text -> Attribute+min_ = makeAttribute "min"++-- | The @multiple@ attribute.+multiple_ :: Text -> Attribute+multiple_ = makeAttribute "multiple"++-- | The @name@ attribute.+name_ :: Text -> Attribute+name_ = makeAttribute "name"++-- | The @novalidate@ attribute.+novalidate_ :: Text -> Attribute+novalidate_ = makeAttribute "novalidate"++-- | The @onbeforeonload@ attribute.+onbeforeonload_ :: Text -> Attribute+onbeforeonload_ = makeAttribute "onbeforeonload"++-- | The @onbeforeprint@ attribute.+onbeforeprint_ :: Text -> Attribute+onbeforeprint_ = makeAttribute "onbeforeprint"++-- | The @onblur@ attribute.+onblur_ :: Text -> Attribute+onblur_ = makeAttribute "onblur"++-- | The @oncanplay@ attribute.+oncanplay_ :: Text -> Attribute+oncanplay_ = makeAttribute "oncanplay"++-- | The @oncanplaythrough@ attribute.+oncanplaythrough_ :: Text -> Attribute+oncanplaythrough_ = makeAttribute "oncanplaythrough"++-- | The @onchange@ attribute.+onchange_ :: Text -> Attribute+onchange_ = makeAttribute "onchange"++-- | The @onclick@ attribute.+onclick_ :: Text -> Attribute+onclick_ = makeAttribute "onclick"++-- | The @oncontextmenu@ attribute.+oncontextmenu_ :: Text -> Attribute+oncontextmenu_ = makeAttribute "oncontextmenu"++-- | The @ondblclick@ attribute.+ondblclick_ :: Text -> Attribute+ondblclick_ = makeAttribute "ondblclick"++-- | The @ondrag@ attribute.+ondrag_ :: Text -> Attribute+ondrag_ = makeAttribute "ondrag"++-- | The @ondragend@ attribute.+ondragend_ :: Text -> Attribute+ondragend_ = makeAttribute "ondragend"++-- | The @ondragenter@ attribute.+ondragenter_ :: Text -> Attribute+ondragenter_ = makeAttribute "ondragenter"++-- | The @ondragleave@ attribute.+ondragleave_ :: Text -> Attribute+ondragleave_ = makeAttribute "ondragleave"++-- | The @ondragover@ attribute.+ondragover_ :: Text -> Attribute+ondragover_ = makeAttribute "ondragover"++-- | The @ondragstart@ attribute.+ondragstart_ :: Text -> Attribute+ondragstart_ = makeAttribute "ondragstart"++-- | The @ondrop@ attribute.+ondrop_ :: Text -> Attribute+ondrop_ = makeAttribute "ondrop"++-- | The @ondurationchange@ attribute.+ondurationchange_ :: Text -> Attribute+ondurationchange_ = makeAttribute "ondurationchange"++-- | The @onemptied@ attribute.+onemptied_ :: Text -> Attribute+onemptied_ = makeAttribute "onemptied"++-- | The @onended@ attribute.+onended_ :: Text -> Attribute+onended_ = makeAttribute "onended"++-- | The @onerror@ attribute.+onerror_ :: Text -> Attribute+onerror_ = makeAttribute "onerror"++-- | The @onfocus@ attribute.+onfocus_ :: Text -> Attribute+onfocus_ = makeAttribute "onfocus"++-- | The @onformchange@ attribute.+onformchange_ :: Text -> Attribute+onformchange_ = makeAttribute "onformchange"++-- | The @onforminput@ attribute.+onforminput_ :: Text -> Attribute+onforminput_ = makeAttribute "onforminput"++-- | The @onhaschange@ attribute.+onhaschange_ :: Text -> Attribute+onhaschange_ = makeAttribute "onhaschange"++-- | The @oninput@ attribute.+oninput_ :: Text -> Attribute+oninput_ = makeAttribute "oninput"++-- | The @oninvalid@ attribute.+oninvalid_ :: Text -> Attribute+oninvalid_ = makeAttribute "oninvalid"++-- | The @onkeydown@ attribute.+onkeydown_ :: Text -> Attribute+onkeydown_ = makeAttribute "onkeydown"++-- | The @onkeyup@ attribute.+onkeyup_ :: Text -> Attribute+onkeyup_ = makeAttribute "onkeyup"++-- | The @onload@ attribute.+onload_ :: Text -> Attribute+onload_ = makeAttribute "onload"++-- | The @onloadeddata@ attribute.+onloadeddata_ :: Text -> Attribute+onloadeddata_ = makeAttribute "onloadeddata"++-- | The @onloadedmetadata@ attribute.+onloadedmetadata_ :: Text -> Attribute+onloadedmetadata_ = makeAttribute "onloadedmetadata"++-- | The @onloadstart@ attribute.+onloadstart_ :: Text -> Attribute+onloadstart_ = makeAttribute "onloadstart"++-- | The @onmessage@ attribute.+onmessage_ :: Text -> Attribute+onmessage_ = makeAttribute "onmessage"++-- | The @onmousedown@ attribute.+onmousedown_ :: Text -> Attribute+onmousedown_ = makeAttribute "onmousedown"++-- | The @onmousemove@ attribute.+onmousemove_ :: Text -> Attribute+onmousemove_ = makeAttribute "onmousemove"++-- | The @onmouseout@ attribute.+onmouseout_ :: Text -> Attribute+onmouseout_ = makeAttribute "onmouseout"++-- | The @onmouseover@ attribute.+onmouseover_ :: Text -> Attribute+onmouseover_ = makeAttribute "onmouseover"++-- | The @onmouseup@ attribute.+onmouseup_ :: Text -> Attribute+onmouseup_ = makeAttribute "onmouseup"++-- | The @onmousewheel@ attribute.+onmousewheel_ :: Text -> Attribute+onmousewheel_ = makeAttribute "onmousewheel"++-- | The @ononline@ attribute.+ononline_ :: Text -> Attribute+ononline_ = makeAttribute "ononline"++-- | The @onpagehide@ attribute.+onpagehide_ :: Text -> Attribute+onpagehide_ = makeAttribute "onpagehide"++-- | The @onpageshow@ attribute.+onpageshow_ :: Text -> Attribute+onpageshow_ = makeAttribute "onpageshow"++-- | The @onpause@ attribute.+onpause_ :: Text -> Attribute+onpause_ = makeAttribute "onpause"++-- | The @onplay@ attribute.+onplay_ :: Text -> Attribute+onplay_ = makeAttribute "onplay"++-- | The @onplaying@ attribute.+onplaying_ :: Text -> Attribute+onplaying_ = makeAttribute "onplaying"++-- | The @onprogress@ attribute.+onprogress_ :: Text -> Attribute+onprogress_ = makeAttribute "onprogress"++-- | The @onpropstate@ attribute.+onpropstate_ :: Text -> Attribute+onpropstate_ = makeAttribute "onpropstate"++-- | The @onratechange@ attribute.+onratechange_ :: Text -> Attribute+onratechange_ = makeAttribute "onratechange"++-- | The @onreadystatechange@ attribute.+onreadystatechange_ :: Text -> Attribute+onreadystatechange_ = makeAttribute "onreadystatechange"++-- | The @onredo@ attribute.+onredo_ :: Text -> Attribute+onredo_ = makeAttribute "onredo"++-- | The @onresize@ attribute.+onresize_ :: Text -> Attribute+onresize_ = makeAttribute "onresize"++-- | The @onscroll@ attribute.+onscroll_ :: Text -> Attribute+onscroll_ = makeAttribute "onscroll"++-- | The @onseeked@ attribute.+onseeked_ :: Text -> Attribute+onseeked_ = makeAttribute "onseeked"++-- | The @onseeking@ attribute.+onseeking_ :: Text -> Attribute+onseeking_ = makeAttribute "onseeking"++-- | The @onselect@ attribute.+onselect_ :: Text -> Attribute+onselect_ = makeAttribute "onselect"++-- | The @onstalled@ attribute.+onstalled_ :: Text -> Attribute+onstalled_ = makeAttribute "onstalled"++-- | The @onstorage@ attribute.+onstorage_ :: Text -> Attribute+onstorage_ = makeAttribute "onstorage"++-- | The @onsubmit@ attribute.+onsubmit_ :: Text -> Attribute+onsubmit_ = makeAttribute "onsubmit"++-- | The @onsuspend@ attribute.+onsuspend_ :: Text -> Attribute+onsuspend_ = makeAttribute "onsuspend"++-- | The @ontimeupdate@ attribute.+ontimeupdate_ :: Text -> Attribute+ontimeupdate_ = makeAttribute "ontimeupdate"++-- | The @onundo@ attribute.+onundo_ :: Text -> Attribute+onundo_ = makeAttribute "onundo"++-- | The @onunload@ attribute.+onunload_ :: Text -> Attribute+onunload_ = makeAttribute "onunload"++-- | The @onvolumechange@ attribute.+onvolumechange_ :: Text -> Attribute+onvolumechange_ = makeAttribute "onvolumechange"++-- | The @onwaiting@ attribute.+onwaiting_ :: Text -> Attribute+onwaiting_ = makeAttribute "onwaiting"++-- | The @open@ attribute.+open_ :: Text -> Attribute+open_ = makeAttribute "open"++-- | The @optimum@ attribute.+optimum_ :: Text -> Attribute+optimum_ = makeAttribute "optimum"++-- | The @pattern@ attribute.+pattern_ :: Text -> Attribute+pattern_ = makeAttribute "pattern"++-- | The @ping@ attribute.+ping_ :: Text -> Attribute+ping_ = makeAttribute "ping"++-- | The @placeholder@ attribute.+placeholder_ :: Text -> Attribute+placeholder_ = makeAttribute "placeholder"++-- | The @preload@ attribute.+preload_ :: Text -> Attribute+preload_ = makeAttribute "preload"++-- | The @pubdate@ attribute.+pubdate_ :: Text -> Attribute+pubdate_ = makeAttribute "pubdate"++-- | The @radiogroup@ attribute.+radiogroup_ :: Text -> Attribute+radiogroup_ = makeAttribute "radiogroup"++-- | The @readonly@ attribute.+readonly_ :: Text -> Attribute+readonly_ = makeAttribute "readonly"++-- | The @rel@ attribute.+rel_ :: Text -> Attribute+rel_ = makeAttribute "rel"++-- | The @required@ attribute.+required_ :: Text -> Attribute+required_ = makeAttribute "required"++-- | The @reversed@ attribute.+reversed_ :: Text -> Attribute+reversed_ = makeAttribute "reversed"++-- | The @rows@ attribute.+rows_ :: Text -> Attribute+rows_ = makeAttribute "rows"++-- | The @rowspan@ attribute.+rowspan_ :: Text -> Attribute+rowspan_ = makeAttribute "rowspan"++-- | The @sandbox@ attribute.+sandbox_ :: Text -> Attribute+sandbox_ = makeAttribute "sandbox"++-- | The @scope@ attribute.+scope_ :: Text -> Attribute+scope_ = makeAttribute "scope"++-- | The @scoped@ attribute.+scoped_ :: Text -> Attribute+scoped_ = makeAttribute "scoped"++-- | The @seamless@ attribute.+seamless_ :: Text -> Attribute+seamless_ = makeAttribute "seamless"++-- | The @selected@ attribute.+selected_ :: Text -> Attribute+selected_ = makeAttribute "selected"++-- | The @shape@ attribute.+shape_ :: Text -> Attribute+shape_ = makeAttribute "shape"++-- | The @size@ attribute.+size_ :: Text -> Attribute+size_ = makeAttribute "size"++-- | The @sizes@ attribute.+sizes_ :: Text -> Attribute+sizes_ = makeAttribute "sizes"++-- | The @spellcheck@ attribute.+spellcheck_ :: Text -> Attribute+spellcheck_ = makeAttribute "spellcheck"++-- | The @src@ attribute.+src_ :: Text -> Attribute+src_ = makeAttribute "src"++-- | The @srcdoc@ attribute.+srcdoc_ :: Text -> Attribute+srcdoc_ = makeAttribute "srcdoc"++-- | The @start@ attribute.+start_ :: Text -> Attribute+start_ = makeAttribute "start"++-- | The @step@ attribute.+step_ :: Text -> Attribute+step_ = makeAttribute "step"++-- | The @subject@ attribute.+subject_ :: Text -> Attribute+subject_ = makeAttribute "subject"++-- | The @tabindex@ attribute.+tabindex_ :: Text -> Attribute+tabindex_ = makeAttribute "tabindex"++-- | The @target@ attribute.+target_ :: Text -> Attribute+target_ = makeAttribute "target"++-- | The @type@ attribute.+type_ :: Text -> Attribute+type_ = makeAttribute "type"++-- | The @usemap@ attribute.+usemap_ :: Text -> Attribute+usemap_ = makeAttribute "usemap"++-- | The @value@ attribute.+value_ :: Text -> Attribute+value_ = makeAttribute "value"++-- | The @width@ attribute.+width_ :: Text -> Attribute+width_ = makeAttribute "width"++-- | The @wrap@ attribute.+wrap_ :: Text -> Attribute+wrap_ = makeAttribute "wrap"++-- | The @xmlns@ attribute.+xmlns_ :: Text -> Attribute+xmlns_ = makeAttribute "xmlns"
+ test/Example1.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-type-defaults #-}++-- | An example which should always compile and demonstrates \"real\"+-- code.++module Example1 where++import Control.Monad+import Lucid++demo :: Html ()+demo =+  doctypehtml_+    (do head_ (do meta_ [charset_ "utf-8"]+                  meta_ [name_ "viewport"+                        ,content_ "width=device-width, initial-scale=1"]+                  link_ [href_ "//fonts.googleapis.com/css?family=Open+Sans"+                        ,rel_ "stylesheet"+                        ,type_ "text/css"]+                  link_ [href_ "//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.0/css/bootstrap.min.css"+                        ,rel_ "stylesheet"+                        ,type_ "text/css"]+                  title_ "YSU Closing Status")+        body_ (div_ [class_ "container"]+                    (do h1_ "YSU Closing Status"+                        t_ [class_ "deal"] "So, here's the deal:"+                        t_ (do "The weather is currently "+                               strong_ "(unknown)"+                               " and "+                               strong_ "(unknown)"+                               ".")+                        t_ (do "There are currently "+                               strong_ "Closings!"+                               " delays/closings according to a local (Youngstown) news source.")+                        t_ (do "Youngstown State University "+                               strong_ (if False+                                           then span_ [style_ "color: green;"] "WAS mentioned"+                                           else span_ [style_ "color: red;"] "was NOT mentioned")+                               " among them.")+                        t_ (do "There are currently "+                               strong_ (toHtml (maybe "unknown" show (Just 123 :: Maybe Int)))+                               " weather alert(s) covering Youngstown as of "+                               strong_ "2014-23-23"+                               ".")+                        when (0 /= 1)+                             (ul_ (mapM_ (\w ->+                                            li_ (do strong_ "Foo"+                                                    " expiring "+                                                    toHtml (show w)))+                                         [1 .. 5]))+                        hr_ []+                        p_ [style_ "text-align: center;"]+                           (small_ (do "This website is not affiliated Youngstown "+                                       "State University in any way. It was "+                                       (a_ [href_ "https://github.com/relrod/isysuclosed.com/"]+                                           "written")+                                       " to make a point."))+                        p_ [style_ "text-align: center;"]+                           (small_ (do "While hopefully accurate, this is NOT an official "+                                       "resource. Always confirm "+                                       a_ [href_ "https://swww.ysu.edu/downloads/closing_procedure.pdf"]+                                          "official"+                                       " resources."))+                        p_ [style_ "text-align: center; color: #888888"]+                           (small_ "Valid HTML5. Weather information via Weather Underground.")+                        img_ [style_ "display: block; margin: 0 auto; width: 180px;"+                             ,src_ "http://icons.wxug.com/logos/images/wundergroundLogo_4c_horz.jpg"+                             ,alt_ "Weather Underground Logo"])))+  where t_ :: Term a r+           => a -> r+        t_ = termWith "p" [class_ " t "]
test/Main.hs view
@@ -1,14 +1,16 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE ExtendedDefaultRules #-} --- | Test suite for ACE.+-- | Test suite for Lucid.  module Main where  import Lucid+import Lucid.Bootstrap +import Example1+ import Test.HUnit import Test.Hspec @@ -22,7 +24,11 @@   describe "text" testText   describe "elements" testElements   describe "attributes" testAttributes+  describe "attributes-with" testAttributesWith+  describe "extension" testExtension+  describe "special-elements" testSpecials +-- | Test text/unicode. testText :: Spec testText =   do it "simple"@@ -35,6 +41,7 @@         (renderText "fo\243o\333o(\4326\728\8995\728\4326) \9835\65381*:.\65377. .\65377.:*\65381" ==          "fo\243o\333o(\4326\728\8995\728\4326) \9835\65381*:.\65377. .\65377.:*\65381") +-- | Test basic elements and nesting. testElements :: Spec testElements =   do it "simple"@@ -56,12 +63,58 @@         (renderText (p_ (style_ "")) ==          "<p><style></style></p>")      it "no closing"-        (renderText (p_ input_) ==+        (renderText (p_ (input_ [])) ==          "<p><input></p>") +-- | Test that attribute assigning works properly. testAttributes :: Spec testAttributes =   do it "simple"+        (renderText (p_ [class_ "foo"] "foo") ==+         "<p class=\"foo\">foo</p>")+     it "escaping"+        (renderText (p_ [class_ "foo"] "'<>") ==+         "<p class=\"foo\">&#39;&lt;&gt;</p>")+     it "unicode"+        (renderText+           (p_ [class_ "foo"]+               "fo\243o\333o(\4326\728\8995\728\4326) \9835\65381*:.\65377. .\65377.:*\65381") ==+         ("<p class=\"foo\">fo\243o\333o(\4326\728\8995\728\4326) \9835\65381*:.\65377. .\65377.:*\65381</p>"))+     it "nesting"+        (renderText+           (p_ [class_ "foo"]+               (p_ "Hello!")) ==+         "<p class=\"foo\"><p>Hello!</p></p>")+     it "empty"+        (renderText+           (p_ [class_ "foo"]+               (p_ "")) ==+         "<p class=\"foo\"><p></p></p>")+     it "mixed"+        (renderText+           (p_ [class_ "foo",style_ "attrib"]+               (style_ "")) ==+         "<p style=\"attrib\" class=\"foo\"><style></style></p>")+     it "no closing"+        (renderText (p_ [class_ "foo"] (input_ [])) ==+         "<p class=\"foo\"><input></p>")+     it "multiple"+        (renderText (p_ [class_ "foo",id_ "zot"] "foo") ==+         "<p id=\"zot\" class=\"foo\">foo</p>")+     it "encoded"+        (renderText (p_ [class_ "foo<>"] "foo") ==+         "<p class=\"foo&lt;&gt;\">foo</p>")+     it "nesting attributes"+        (renderText+           (with (p_ [class_ "foo"])+                 [class_ "bar"]+                 "foo") ==+         "<p class=\"foobar\">foo</p>")++-- | Test that the `with' combinator still works as expected.+testAttributesWith :: Spec+testAttributesWith =+  do it "simple"         (renderText (with p_ [class_ "foo"] "foo") ==          "<p class=\"foo\">foo</p>")      it "escaping"@@ -88,12 +141,12 @@      it "mixed"         (renderText            (with p_-                 [class_ "foo"]+                 [class_ "foo",style_ "attrib"]                  (style_ "")) ==-         "<p class=\"foo\"><style></style></p>")+         "<p style=\"attrib\" class=\"foo\"><style></style></p>")      it "no closing"-        (renderText (with p_ [class_ "foo"] input_) ==-         "<p class=\"foo\"><input></p>")+        (renderText (with p_ [class_ "foo"] (with (input_ [type_ "text"]) [class_ "zot"])) ==+         "<p class=\"foo\"><input type=\"text\" class=\"zot\"></p>")      it "multiple"         (renderText (with p_ [class_ "foo",id_ "zot"] "foo") ==          "<p id=\"zot\" class=\"foo\">foo</p>")@@ -103,3 +156,24 @@      it "nesting attributes"         (renderText (with (with p_ [class_ "foo"]) [class_ "bar"] "foo") ==          "<p class=\"foobar\">foo</p>")++-- | Test that one can use elements with extensible attributes.+testExtension :: Spec+testExtension =+  do it "bootstrap"+        (renderText (container_ "Foo!") ==+         "<div class=\" container \">Foo!</div>")+     it "bootstrap-attributes-extended"+        (renderText (container_ [class_ "bar",id_ "zot"] "Foo!") ==+         "<div id=\"zot\" class=\" container bar\">Foo!</div>")++-- | Test special elements that do something different to normal+-- elements.+testSpecials :: Spec+testSpecials =+  do it "script"+        (renderText (script_ "alert('Hello, World!')") ==+         "<script>alert('Hello, World!')</script>")+     it "style"+        (renderText (style_ "body{background:url('Hello, World!')}") ==+         "<style>body{background:url('Hello, World!')}</style>")