|
|
|
|
|
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 |
|
|
|
|
Important types.
|
|
|
Simplification of the HtmlM datatype.
|
|
|
Type for an HTML tag. This can be seen as an internal string type used by
BlazeHtml.
| Instances | |
|
|
|
|
|
|
The type for the value part of an attribute.
| Instances | |
|
|
Creating attributes.
|
|
|
:: Tag | Name of the attribute.
| -> AttributeValue | Value for the attribute.
| -> Attribute | Resulting 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."
|
|
|
|
:: Tag | Name of the attribute
| -> AttributeValue | Value for the attribute
| -> Attribute | Resulting 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 allowing us to use a single function for HTML values
| | Methods | | | Instances | |
|
|
|
:: Text | Text to render.
| -> Html | Resulting HTML fragment.
| Render text. Functions like these can be used to supply content in HTML.
|
|
|
|
:: Text | Text to insert
| -> Html | Resulting HTML fragment
| Render text without escaping.
|
|
|
|
:: Text | Text to insert
| -> Html | Resulting HTML fragment
| A variant of text for lazy Text.
|
|
|
|
|
|
|
:: String | String to insert.
| -> Html | Resulting HTML fragment.
| Create an HTML snippet from a String.
|
|
|
|
:: String | String to insert.
| -> Html | Resulting HTML fragment.
| Create an HTML snippet from a String without escaping
|
|
|
|
:: ByteString | Value to insert.
| -> Html | Resulting 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).
|
|
|
|
|
|
Creating tags.
|
|
|
:: Text | Text to create a tag from
| -> Tag | Resulting tag
| Create a Tag from some Text.
|
|
|
|
|
|
Converting values to attribute values.
|
|
|
Class allowing us to use a single function for attribute values
| | Methods | | Convert a value to an HTML attribute value
|
| | Instances | |
|
|
|
|
|
|
:: Text | The actual value
| -> AttributeValue | Resulting attribute value
| Render an attribute value from Text without escaping.
|
|
|
|
|
|
|
|
|
|
Create an attribute value from a String.
|
|
|
Create an attribute value from a String without escaping.
|
|
|
|
|
unsafeLazyByteStringValue | Source |
|
|
|
Setting attributes
|
|
|
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 |