The BlazeHtml core, consisting of functions that offer the power to
generate custom HTML elements. It also offers user-centric functions, which
are exposed through Text.Blaze
.
While this module is exported, usage of it is not recommended, unless you know what you are doing. This module might undergo changes at any time.
- data ChoiceString
- data StaticString = StaticString {
- getString :: String -> String
- getUtf8ByteString :: ByteString
- getText :: Text
- data HtmlM a
- = forall b . Parent StaticString StaticString StaticString (HtmlM b)
- | Leaf StaticString StaticString StaticString
- | Content ChoiceString
- | forall b c . Append (HtmlM b) (HtmlM c)
- | AddAttribute StaticString StaticString ChoiceString (HtmlM a)
- | AddCustomAttribute ChoiceString ChoiceString ChoiceString (HtmlM a)
- | Empty
- type Html = HtmlM ()
- data Tag
- data Attribute
- data AttributeValue
- attribute :: Tag -> Tag -> AttributeValue -> Attribute
- dataAttribute :: Tag -> AttributeValue -> Attribute
- customAttribute :: Tag -> AttributeValue -> Attribute
- text :: Text -> Html
- preEscapedText :: Text -> Html
- lazyText :: Text -> Html
- preEscapedLazyText :: Text -> Html
- string :: String -> Html
- preEscapedString :: String -> Html
- unsafeByteString :: ByteString -> Html
- textTag :: Text -> Tag
- stringTag :: String -> Tag
- textValue :: Text -> AttributeValue
- preEscapedTextValue :: Text -> AttributeValue
- lazyTextValue :: Text -> AttributeValue
- preEscapedLazyTextValue :: Text -> AttributeValue
- stringValue :: String -> AttributeValue
- preEscapedStringValue :: String -> AttributeValue
- unsafeByteStringValue :: ByteString -> AttributeValue
- (!) :: Attributable h => h -> Attribute -> h
- external :: HtmlM a -> HtmlM a
Important types.
data ChoiceString Source
A string denoting input from different string representations.
Static !StaticString | Static data |
String String | A Haskell String |
Text Text | A Text value |
ByteString ByteString | An encoded bytestring |
PreEscaped ChoiceString | A pre-escaped string |
External ChoiceString | External data in style/script tags, should be checked for validity |
AppendChoiceString ChoiceString ChoiceString | Concatenation |
EmptyChoiceString | Empty string |
data StaticString Source
A static string that supports efficient output to all possible backends.
StaticString | |
|
The core HTML datatype.
forall b . Parent StaticString StaticString StaticString (HtmlM b) | Tag, open tag, end tag, content |
Leaf StaticString StaticString StaticString | Tag, open tag, end tag |
Content ChoiceString | HTML content |
forall b c . Append (HtmlM b) (HtmlM c) | Concatenation of two HTML pieces |
AddAttribute StaticString StaticString ChoiceString (HtmlM a) | Add an attribute to the inner HTML. Raw key, key, value, HTML to receive the attribute. |
AddCustomAttribute ChoiceString ChoiceString ChoiceString (HtmlM a) | Add a custom attribute to the inner HTML. |
Empty | Empty HTML. |
Type for an HTML tag. This can be seen as an internal string type used by BlazeHtml.
data AttributeValue Source
The type for the value part of an attribute.
Creating custom tags and attributes.
:: Tag | Raw key |
-> Tag | Shared key string for the HTML attribute. |
-> AttributeValue | Value for the HTML attribute. |
-> Attribute | Resulting HTML attribute. |
Create an HTML attribute that can be applied to an HTML element later using
the !
operator.
:: 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.
Render text. Functions like these can be used to supply content in HTML.
Render text without escaping.
A variant of preEscapedText
for lazy Text
Create an HTML snippet from a String
.
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).
Converting values to tags.
Converting values to attribute values.
:: Text | The actual value. |
-> AttributeValue | Resulting attribute value. |
Render an attribute value from Text
.
:: Text | The actual value |
-> AttributeValue | Resulting attribute value |
Render an attribute value from Text
without escaping.
:: Text | The actual value |
-> AttributeValue | Resulting attribute value |
:: Text | The actual value |
-> AttributeValue | Resulting 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.
:: ByteString | ByteString value |
-> AttributeValue | Resulting attribute value |
Create an attribute value from a 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>