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 +8/−0
- README.md +9/−6
- lucid.cabal +4/−2
- src/Lucid.hs +70/−13
- src/Lucid/Base.hs +117/−37
- src/Lucid/Bootstrap.hs +32/−64
- src/Lucid/Html5.hs +1081/−1081
- test/Example1.hs +72/−0
- test/Main.hs +81/−7
+ 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 < 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\">'<></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<>\">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>")