HORIZON HASKELLDocslts/ghc-10.0.x77a86622026-10-31Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 77a8662 · 2026-10-31

Moduleblaze-markup-0.8.3.0Haskell2010

Text.Blaze.Internal

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.

Contents
  1. Important types.
  2. Creating custom tags and attributes.
  3. Converting values to Markup.
  4. Comments
  5. Converting values to tags.
  6. Converting values to attribute values.
  7. Setting attributes
  8. Modifying Markup elements
  9. Querying Markup elements
Synopsis

Important types.

datadata ChoiceString

A string denoting input from different string representations.

Constructors

Instances3IsString, Semigroup, Monoid
datadata MarkupM a

The core Markup datatype.

Constructors

Instances10Monad, Functor, Applicative, IsString, Semigroup, Monoid, …
newtypenewtype Tag

Type for an HTML tag. This can be seen as an internal string type used by BlazeMarkup.

Instances1IsString
  • IsString TagDefined in blaze-markup-0.8.3.0 · Text.Blaze.Internal

Creating custom tags and attributes.

valueattribute
  1. :: Tag

    Raw key

  2. -> Tag

    Shared key string for the HTML attribute.

  3. -> AttributeValue

    Value for the HTML attribute.

  4. -> Attribute

    Resulting HTML attribute.

Create an HTML attribute that can be applied to an HTML element later using the ! operator.

valuedataAttribute
  1. :: Tag

    Name of the attribute.

  2. -> AttributeValue

    Value for the attribute.

  3. -> 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."
valuecustomAttribute
  1. :: Tag

    Name of the attribute

  2. -> AttributeValue

    Value for the attribute

  3. -> 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.

valuetext
  1. :: Text

    Text to render.

  2. -> Markup

    Resulting HTML fragment.

Render text. Functions like these can be used to supply content in HTML.

Comments

Converting values to tags.

Converting values to attribute values.

Setting attributes

method(!) :: h -> Attribute -> h

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>
value(!?) :: Attributable h => h -> (Bool, Attribute) -> h

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

valuecontents :: MarkupM a -> MarkupM a

Take only the text content of an HTML tree.

contents $ do
    p ! $ "Hello "
    p ! $ "Word!"

Result:

Hello World!
valueexternal :: MarkupM a -> MarkupM a

Mark HTML as external data. External data can be:

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

Querying Markup elements