Safe Haskell | None |
---|---|
Language | Haskell2010 |
Text.Blaze.Internal
Description
The BlazeMarkup core, consisting of functions that offer the power to generate custom markup 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
-
data
StaticString
=
StaticString
{
- getString :: String -> String
- getUtf8ByteString :: ByteString
- getText :: Text
-
data
MarkupM
a
- = Parent StaticString StaticString StaticString ( MarkupM a)
- | CustomParent ChoiceString ( MarkupM a)
- | Leaf StaticString StaticString StaticString a
- | CustomLeaf ChoiceString Bool a
- | Content ChoiceString a
- | Comment ChoiceString a
- | forall b. Append ( MarkupM b) ( MarkupM a)
- | AddAttribute StaticString StaticString ChoiceString ( MarkupM a)
- | AddCustomAttribute ChoiceString ChoiceString ( MarkupM a)
- | Empty a
- type Markup = MarkupM ()
- data Tag
- data Attribute
- data AttributeValue
- customParent :: Tag -> Markup -> Markup
- customLeaf :: Tag -> Bool -> Markup
- attribute :: Tag -> Tag -> AttributeValue -> Attribute
- dataAttribute :: Tag -> AttributeValue -> Attribute
- customAttribute :: Tag -> AttributeValue -> Attribute
- text :: Text -> Markup
- preEscapedText :: Text -> Markup
- lazyText :: Text -> Markup
- preEscapedLazyText :: Text -> Markup
- textBuilder :: Builder -> Markup
- preEscapedTextBuilder :: Builder -> Markup
- string :: String -> Markup
- preEscapedString :: String -> Markup
- unsafeByteString :: ByteString -> Markup
- unsafeLazyByteString :: ByteString -> Markup
- textComment :: Text -> Markup
- lazyTextComment :: Text -> Markup
- stringComment :: String -> Markup
- unsafeByteStringComment :: ByteString -> Markup
- unsafeLazyByteStringComment :: ByteString -> Markup
- textTag :: Text -> Tag
- stringTag :: String -> Tag
- textValue :: Text -> AttributeValue
- preEscapedTextValue :: Text -> AttributeValue
- lazyTextValue :: Text -> AttributeValue
- preEscapedLazyTextValue :: Text -> AttributeValue
- textBuilderValue :: Builder -> AttributeValue
- preEscapedTextBuilderValue :: Builder -> AttributeValue
- stringValue :: String -> AttributeValue
- preEscapedStringValue :: String -> AttributeValue
- unsafeByteStringValue :: ByteString -> AttributeValue
- unsafeLazyByteStringValue :: ByteString -> AttributeValue
- class Attributable h
- (!) :: Attributable h => h -> Attribute -> h
- (!?) :: Attributable h => h -> ( Bool , Attribute ) -> h
- contents :: MarkupM a -> MarkupM a
- external :: MarkupM a -> MarkupM a
- null :: MarkupM a -> Bool
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
IsString ChoiceString Source # | |
Defined in Text.Blaze.Internal Methods fromString :: String -> ChoiceString Source # |
|
Semigroup ChoiceString Source # | |
Defined in Text.Blaze.Internal Methods (<>) :: ChoiceString -> ChoiceString -> ChoiceString Source # sconcat :: NonEmpty ChoiceString -> ChoiceString Source # stimes :: Integral b => b -> ChoiceString -> ChoiceString Source # |
|
Monoid ChoiceString Source # | |
Defined in Text.Blaze.Internal Methods mempty :: ChoiceString Source # mappend :: ChoiceString -> ChoiceString -> ChoiceString Source # mconcat :: [ ChoiceString ] -> ChoiceString Source # |
data StaticString Source #
A static string that supports efficient output to all possible backends.
Constructors
StaticString | |
Fields
|
Instances
IsString StaticString Source # | |
Defined in Text.Blaze.Internal Methods fromString :: String -> StaticString Source # |
The core Markup datatype.
Constructors
Parent StaticString StaticString StaticString ( MarkupM a) |
Tag, open tag, end tag, content |
CustomParent ChoiceString ( MarkupM a) |
Custom parent |
Leaf StaticString StaticString StaticString a |
Tag, open tag, end tag |
CustomLeaf ChoiceString Bool a |
Custom leaf |
Content ChoiceString a |
HTML content |
Comment ChoiceString a |
HTML comment. Note: you should wrap the
|
forall b. Append ( MarkupM b) ( MarkupM a) |
Concatenation of two HTML pieces |
AddAttribute StaticString StaticString ChoiceString ( MarkupM a) |
Add an attribute to the inner HTML. Raw key, key, value, HTML to receive the attribute. |
AddCustomAttribute ChoiceString ChoiceString ( MarkupM a) |
Add a custom attribute to the inner HTML. |
Empty a |
Empty HTML. |
Instances
Monad MarkupM Source # | |
Functor MarkupM Source # | |
Applicative MarkupM Source # | |
Defined in Text.Blaze.Internal |
|
ToMarkup Markup Source # | |
a ~ () => IsString ( MarkupM a) Source # | |
Defined in Text.Blaze.Internal Methods fromString :: String -> MarkupM a Source # |
|
Monoid a => Semigroup ( MarkupM a) Source # | |
Monoid a => Monoid ( MarkupM a) Source # | |
Attributable ( MarkupM a) Source # | |
ToMarkup [ Markup ] Source # | |
Attributable ( MarkupM a -> MarkupM b) Source # | |
Type for an HTML tag. This can be seen as an internal string type used by BlazeMarkup.
Instances
IsString Tag Source # | |
Defined in Text.Blaze.Internal Methods fromString :: String -> Tag Source # |
data AttributeValue Source #
The type for the value part of an attribute.
Instances
IsString AttributeValue Source # | |
Defined in Text.Blaze.Internal Methods fromString :: String -> AttributeValue Source # |
|
Semigroup AttributeValue Source # | |
Defined in Text.Blaze.Internal Methods (<>) :: AttributeValue -> AttributeValue -> AttributeValue Source # sconcat :: NonEmpty AttributeValue -> AttributeValue Source # stimes :: Integral b => b -> AttributeValue -> AttributeValue Source # |
|
Monoid AttributeValue Source # | |
Defined in Text.Blaze.Internal Methods mempty :: AttributeValue Source # mappend :: AttributeValue -> AttributeValue -> AttributeValue Source # mconcat :: [ AttributeValue ] -> AttributeValue Source # |
|
ToValue AttributeValue Source # | |
Defined in Text.Blaze Methods toValue :: AttributeValue -> AttributeValue Source # preEscapedToValue :: AttributeValue -> AttributeValue Source # |
Creating custom tags and attributes.
Create a custom parent element
Create a custom leaf element
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 BlazeMarkup using this function. The above fragment could be described using BlazeMarkup 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 Markup.
Render text. Functions like these can be used to supply content in HTML.
Render text without escaping.
A variant of
preEscapedText
for lazy
Text
preEscapedTextBuilder Source #
A variant of
preEscapedText
for lazy
Text
Create an HTML snippet from a
String
.
Create an HTML snippet from a
String
without escaping
Arguments
:: ByteString |
Value to insert. |
-> Markup |
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).
Arguments
:: ByteString |
Value to insert |
-> Markup |
Resulting HTML fragment |
Insert a lazy
ByteString
. See
unsafeByteString
for reasons why this
is an unsafe operation.
Comments
textComment :: Text -> Markup Source #
Create a comment from a
Text
value.
The text should not contain
"--"
.
This is not checked by the library.
lazyTextComment :: Text -> Markup Source #
Create a comment from a
Text
value.
The text should not contain
"--"
.
This is not checked by the library.
stringComment :: String -> Markup Source #
Create a comment from a
String
value.
The text should not contain
"--"
.
This is not checked by the library.
unsafeByteStringComment :: ByteString -> Markup Source #
Create a comment from a
ByteString
value.
The text should not contain
"--"
.
This is not checked by the library.
unsafeLazyByteStringComment :: ByteString -> Markup Source #
Create a comment from a
ByteString
value.
The text should not contain
"--"
.
This is not checked by the library.
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 |
preEscapedLazyTextValue Source #
Arguments
:: Text |
The actual value |
-> AttributeValue |
Resulting attribute value |
A variant of
preEscapedTextValue
for lazy
Text
Arguments
:: Builder |
The actual value |
-> AttributeValue |
Resulting attribute value |
preEscapedTextBuilderValue Source #
Arguments
:: Builder |
The actual value |
-> AttributeValue |
Resulting attribute value |
A variant of
preEscapedTextValue
for text
Builder
stringValue :: String -> AttributeValue Source #
Create an attribute value from a
String
.
preEscapedStringValue :: String -> AttributeValue Source #
Create an attribute value from a
String
without escaping.
unsafeByteStringValue Source #
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.
unsafeLazyByteStringValue Source #
Arguments
:: ByteString |
ByteString value |
-> AttributeValue |
Resulting attribute value |
Create an attribute value from a lazy
ByteString
. See
unsafeByteString
for reasons why this might not be a good idea.
Setting attributes
class Attributable h Source #
Used for applying attributes. You should not define your own instances of this class.
Minimal complete definition
Instances
(!) :: Attributable h => h -> Attribute -> h Source #
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>
(!?) :: Attributable h => h -> ( Bool , Attribute ) -> h Source #
Shorthand for setting an attribute depending on a conditional.
Example:
p !? (isBig, A.class "big") $ "Hello"
Gives the same result as:
(if isBig then p ! A.class "big" else p) "Hello"
Modifying Markup elements
contents :: MarkupM a -> MarkupM a Source #
Take only the text content of an HTML tree.
contents $ do p ! $ "Hello " p ! $ "Word!"
Result:
Hello World!