Text.Blaze.Internal
Contents
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.
- 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
- showHtml :: Show a => a -> Html
- preEscapedShowHtml :: Show a => a -> 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.
Constructors
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 |
Instances
data StaticString Source
A static string that supports efficient output to all possible backends.
Constructors
StaticString | |
Fields
|
Instances
The core HTML datatype.
Constructors
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.
Creating custom tags and attributes.
Arguments
:: 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.
Arguments
:: 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."
Arguments
:: 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
Create an HTML snippet from a datatype that instantiates Show
.
Create an HTML snippet from a datatype that instantiates Show
. This
function will not do any HTML entity escaping.
Arguments
:: 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.
Arguments
:: Text | The actual value. |
-> AttributeValue | Resulting attribute value. |
Render an attribute value from Text
.
Arguments
:: Text | The actual value |
-> AttributeValue | Resulting attribute value |
Render an attribute value from Text
without escaping.
Arguments
:: Text | The actual value |
-> AttributeValue | Resulting attribute value |
Arguments
:: 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.
Arguments
:: 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>