blaze-html-0.4.1.3: A blazingly fast HTML combinator library.Source codeContentsIndex
Text.Blaze
Contents
Important types.
Creating attributes.
Converting values to HTML.
Creating tags.
Converting values to attribute values.
Setting attributes
Description

BlazeHtml is an HTML combinator library. It provides a way to embed HTML in Haskell in an efficient and convenient way, with a light-weight syntax.

To use the library, one needs to import a set of HTML combinators. For example, you can use HTML 4 Strict.

 {-# LANGUAGE OverloadedStrings #-}
 import Prelude hiding (head, id, div)
 import Text.Blaze.Html4.Strict hiding (map)
 import Text.Blaze.Html4.Strict.Attributes hiding (title)

To render the page later on, you need a so called Renderer. The recommended renderer is an UTF-8 renderer which produces a lazy bytestring.

 import Text.Blaze.Renderer.Utf8 (renderHtml)

Now, you can describe pages using the imported combinators.

 page1 :: Html
 page1 = html $ do
 	head $ do
		title "Introduction page."
		link ! rel "stylesheet" ! type_ "text/css" ! href "screen.css"
	body $ do
 		div ! id "header" $ "Syntax"
 		p "This is an example of BlazeHtml syntax."
		ul $ forM_ [1, 2, 3] (li . string . show)

The resulting HTML can now be extracted using:

 renderHtml page1
Synopsis
type Html = HtmlM ()
data Tag
data Attribute
data AttributeValue
dataAttribute :: Tag -> AttributeValue -> Attribute
customAttribute :: Tag -> AttributeValue -> Attribute
class ToHtml a where
toHtml :: a -> Html
text :: Text -> Html
preEscapedText :: Text -> Html
lazyText :: Text -> Html
preEscapedLazyText :: Text -> Html
string :: String -> Html
preEscapedString :: String -> Html
unsafeByteString :: ByteString -> Html
unsafeLazyByteString :: ByteString -> Html
textTag :: Text -> Tag
stringTag :: String -> Tag
class ToValue a where
toValue :: a -> AttributeValue
textValue :: Text -> AttributeValue
preEscapedTextValue :: Text -> AttributeValue
lazyTextValue :: Text -> AttributeValue
preEscapedLazyTextValue :: Text -> AttributeValue
stringValue :: String -> AttributeValue
preEscapedStringValue :: String -> AttributeValue
unsafeByteStringValue :: ByteString -> AttributeValue
unsafeLazyByteStringValue :: ByteString -> AttributeValue
(!) :: Attributable h => h -> Attribute -> h
Important types.
type Html = HtmlM ()Source
Simplification of the HtmlM datatype.
data Tag Source
Type for an HTML tag. This can be seen as an internal string type used by BlazeHtml.
show/hide Instances
data Attribute Source
Type for an attribute.
data AttributeValue Source
The type for the value part of an attribute.
show/hide Instances
Creating attributes.
dataAttributeSource
:: TagName of the attribute.
-> AttributeValueValue for the attribute.
-> AttributeResulting HTML attribute.

From HTML 5 onwards, the user is able to specify custom data attributes.

An example:

 <p data-foo="bar">Hello.</p>

We support this in BlazeHtml using this funcion. The above fragment could be described using BlazeHtml with:

 p ! dataAttribute "foo" "bar" $ "Hello."
customAttributeSource
:: TagName of the attribute
-> AttributeValueValue for the attribute
-> AttributeResulting HTML attribtue

Create a custom attribute. This is not specified in the HTML spec, but some JavaScript libraries rely on it.

An example:

 <select dojoType="select">foo</select>

Can be produced using:

 select ! customAttribute "dojoType" "select" $ "foo"
Converting values to HTML.
class ToHtml a whereSource
Class allowing us to use a single function for HTML values
Methods
toHtml :: a -> HtmlSource
Convert a value to HTML.
show/hide Instances
textSource
:: TextText to render.
-> HtmlResulting HTML fragment.
Render text. Functions like these can be used to supply content in HTML.
preEscapedTextSource
:: TextText to insert
-> HtmlResulting HTML fragment
Render text without escaping.
lazyTextSource
:: TextText to insert
-> HtmlResulting HTML fragment
A variant of text for lazy Text.
preEscapedLazyTextSource
:: TextText to insert
-> HtmlResulting HTML fragment
A variant of preEscapedText for lazy Text
stringSource
:: StringString to insert.
-> HtmlResulting HTML fragment.
Create an HTML snippet from a String.
preEscapedStringSource
:: StringString to insert.
-> HtmlResulting HTML fragment.
Create an HTML snippet from a String without escaping
unsafeByteStringSource
:: ByteStringValue to insert.
-> HtmlResulting HTML fragment.

Insert a ByteString. This is an unsafe operation:

  • The ByteString could have the wrong encoding.
  • The ByteString might contain illegal HTML characters (no escaping is done).
unsafeLazyByteStringSource
:: ByteStringValue to insert
-> HtmlResulting HTML fragment
Insert a lazy ByteString. See unsafeByteString for reasons why this is an unsafe operation.
Creating tags.
textTagSource
:: TextText to create a tag from
-> TagResulting tag
Create a Tag from some Text.
stringTagSource
:: StringString to create a tag from
-> TagResulting tag
Create a Tag from a String.
Converting values to attribute values.
class ToValue a whereSource
Class allowing us to use a single function for attribute values
Methods
toValue :: a -> AttributeValueSource
Convert a value to an HTML attribute value
show/hide Instances
textValueSource
:: TextThe actual value.
-> AttributeValueResulting attribute value.
Render an attribute value from Text.
preEscapedTextValueSource
:: TextThe actual value
-> AttributeValueResulting attribute value
Render an attribute value from Text without escaping.
lazyTextValueSource
:: TextThe actual value
-> AttributeValueResulting attribute value
A variant of textValue for lazy Text
preEscapedLazyTextValueSource
:: TextThe actual value
-> AttributeValueResulting attribute value
A variant of preEscapedTextValue for lazy Text
stringValue :: String -> AttributeValueSource
Create an attribute value from a String.
preEscapedStringValue :: String -> AttributeValueSource
Create an attribute value from a String without escaping.
unsafeByteStringValueSource
:: ByteStringByteString value
-> AttributeValueResulting attribute value
Create an attribute value from a ByteString. See unsafeByteString for reasons why this might not be a good idea.
unsafeLazyByteStringValueSource
:: ByteStringByteString value
-> AttributeValueResulting attribute value
Create an attribute value from a lazy ByteString. See unsafeByteString for reasons why this might not be a good idea.
Setting attributes
(!) :: Attributable h => h -> Attribute -> hSource

Apply an attribute to an element.

Example:

 img ! src "foo.png"

Result:

 <img src="foo.png" />

This can be used on nested elements as well.

Example:

 p ! style "float: right" $ "Hello!"

Result:

 <p style="float: right">Hello!</p>
Produced by Haddock version 2.6.1