HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

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.

  • 7 types
  • 1 class
  • 36 values

Important types.

7 declarations
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
newtypenewtype Attribute
#

Type for an attribute.

Instances2Semigroup, Monoid

Creating custom tags and attributes.

5 declarations
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.

10 declarations
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

5 declarations
valuetextComment :: Text -> Markup
#

Create a comment from a Text value. The text should not contain "--". This is not checked by the library.

Converting values to tags.

2 declarations

Converting values to attribute values.

10 declarations

Setting attributes

3 declarations
classclass Attributable h where
#

Used for applying attributes. You should not define your own instances of this class.

Instances2Attributable
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

2 declarations
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

1 declaration
valuenull :: MarkupM a -> Bool
#

Check if a Markup value is completely empty (renders to the empty string).