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

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.

Synopsis
data ChoiceString
= Static !StaticString
| String String
| Text Text
| ByteString ByteString
| PreEscaped ChoiceString
| External ChoiceString
| AppendChoiceString ChoiceString ChoiceString
| EmptyChoiceString
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
unsafeLazyByteString :: 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
unsafeLazyByteStringValue :: 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.
Constructors
Static !StaticStringStatic data
String StringA Haskell String
Text TextA Text value
ByteString ByteStringAn encoded bytestring
PreEscaped ChoiceStringA pre-escaped string
External ChoiceStringExternal data in style/script tags, should be checked for validity
AppendChoiceString ChoiceString ChoiceStringConcatenation
EmptyChoiceStringEmpty string
show/hide Instances
data StaticString Source
A static string that supports efficient output to all possible backends.
Constructors
StaticString
getString :: String -> StringAppending haskell string
getUtf8ByteString :: ByteStringUTF-8 encoded bytestring
getText :: TextText value
show/hide Instances
data HtmlM a Source
The core HTML datatype.
Constructors
forall b . Parent StaticString StaticString StaticString (HtmlM b)Tag, open tag, end tag, content
Leaf StaticString StaticString StaticStringTag, open tag, end tag
Content ChoiceStringHTML 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.
EmptyEmpty HTML.
show/hide Instances
Monad HtmlM
Typeable1 HtmlM
IsString (HtmlM a)
Monoid a => Monoid (HtmlM a)
Attributable (HtmlM a)
Attributable (HtmlM a -> HtmlM b)
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 custom tags and attributes.
attributeSource
:: TagRaw key
-> TagShared key string for the HTML attribute.
-> AttributeValueValue for the HTML attribute.
-> AttributeResulting HTML attribute.
Create an HTML attribute that can be applied to an HTML element later using the ! operator.
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.
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.
Converting values to 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.
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>
Modifying HTML elements
external :: HtmlM a -> HtmlM aSource

Mark HTML as external data. External data can be:

  • CSS data in a style tag;
  • Script data in a script tag.

This function is applied automatically when using the style or script combinators.

Produced by Haddock version 2.6.1