blazeT-0.0.6: A true monad (transformer) version of the blaze-markup and blaze-html libraries
Safe HaskellSafe-Inferred
LanguageHaskell2010

Text.BlazeT

Synopsis

DO NOT READ THIS. READ Text.BlazeT.Internal INSTEAD

Due due a Haddock bug, this documentation is misleading. Please read Text.BlazeT.Internal instead.

(The bug shows both Text.Blaze.Markup and Text.BlazeT.Markup as Markup.)

Use this documentation only to see which entities are exported by this module.

DO NOT READ THIS

data Tag #

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

Instances

Instances details
IsString Tag 
Instance details

Defined in Text.Blaze.Internal

Methods

fromString :: String -> Tag #

data Attribute #

Type for an attribute.

Instances

Instances details
Monoid Attribute 
Instance details

Defined in Text.Blaze.Internal

Semigroup Attribute 
Instance details

Defined in Text.Blaze.Internal

dataAttribute #

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

customAttribute #

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"

class ToMarkup a where Source #

Instances

Instances details
ToMarkup a => ToMarkup a Source # 
Instance details

Defined in Text.BlazeT

unsafeLazyByteString Source #

Arguments

:: ByteString

Value to insert

-> Markup

Resulting HTML fragment

Insert a lazy ByteString. See unsafeByteString for reasons why this is an unsafe operation.

textTag #

Arguments

:: Text

Text to create a tag from

-> Tag

Resulting tag

Create a Tag from some ChoiceString.

stringTag #

Arguments

:: String

String to create a tag from

-> Tag

Resulting tag

Create a Tag from a ChoiceString.

class ToValue a where #

Class allowing us to use a single function for attribute values

Minimal complete definition

toValue

Methods

toValue :: a -> AttributeValue #

Convert a value to an attribute value

preEscapedToValue :: a -> AttributeValue #

Convert a value to an attribute value without escaping

Instances

Instances details
ToValue Int32 
Instance details

Defined in Text.Blaze

ToValue Int64 
Instance details

Defined in Text.Blaze

ToValue Word32 
Instance details

Defined in Text.Blaze

ToValue Word64 
Instance details

Defined in Text.Blaze

ToValue AttributeValue 
Instance details

Defined in Text.Blaze

ToValue Text 
Instance details

Defined in Text.Blaze

ToValue Builder 
Instance details

Defined in Text.Blaze

ToValue Text 
Instance details

Defined in Text.Blaze

ToValue String 
Instance details

Defined in Text.Blaze

ToValue Integer 
Instance details

Defined in Text.Blaze

ToValue Bool 
Instance details

Defined in Text.Blaze

ToValue Char 
Instance details

Defined in Text.Blaze

ToValue Double 
Instance details

Defined in Text.Blaze

ToValue Float 
Instance details

Defined in Text.Blaze

ToValue Int 
Instance details

Defined in Text.Blaze

ToValue Word 
Instance details

Defined in Text.Blaze

textValue #

Arguments

:: Text

The actual value.

-> AttributeValue

Resulting attribute value.

Render an attribute value from ChoiceString.

preEscapedTextValue #

Arguments

:: Text

The actual value

-> AttributeValue

Resulting attribute value

Render an attribute value from ChoiceString without escaping.

lazyTextValue #

Arguments

:: Text

The actual value

-> AttributeValue

Resulting attribute value

A variant of textValue for lazy Text

preEscapedLazyTextValue #

Arguments

:: Text

The actual value

-> AttributeValue

Resulting attribute value

A variant of preEscapedTextValue for lazy Text

stringValue :: String -> AttributeValue #

Create an attribute value from a ChoiceString.

preEscapedStringValue :: String -> AttributeValue #

Create an attribute value from a ChoiceString without escaping.

unsafeByteStringValue #

Arguments

:: ByteString

ByteString value

-> AttributeValue

Resulting attribute value

Create an attribute value from a ChoiceString. See unsafeByteString for reasons why this might not be a good idea.

unsafeLazyByteStringValue #

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.

(!) :: Attributable h => 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>

(!?) :: 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"

contents :: Monad m => MarkupT m a -> MarkupT m a Source #

newtype MarkupT m a Source #

Everything is build around the simple newtype definition of the MarkupT transformer, which makes use the Monoid instance of Blaze Markup and is simply a WriterT writing Blaze Markup:

Constructors

MarkupT 

Fields

Instances

Instances details
MonadTrans MarkupT Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

lift :: Monad m => m a -> MarkupT m a #

Monad m => MonadWriter Markup (MarkupT m) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

writer :: (a, Markup) -> MarkupT m a #

tell :: Markup -> MarkupT m () #

listen :: MarkupT m a -> MarkupT m (a, Markup) #

pass :: MarkupT m (a, Markup -> Markup) -> MarkupT m a #

Applicative m => Applicative (MarkupT m) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

pure :: a -> MarkupT m a #

(<*>) :: MarkupT m (a -> b) -> MarkupT m a -> MarkupT m b #

liftA2 :: (a -> b -> c) -> MarkupT m a -> MarkupT m b -> MarkupT m c #

(*>) :: MarkupT m a -> MarkupT m b -> MarkupT m b #

(<*) :: MarkupT m a -> MarkupT m b -> MarkupT m a #

Functor m => Functor (MarkupT m) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

fmap :: (a -> b) -> MarkupT m a -> MarkupT m b #

(<$) :: a -> MarkupT m b -> MarkupT m a #

Monad m => Monad (MarkupT m) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

(>>=) :: MarkupT m a -> (a -> MarkupT m b) -> MarkupT m b #

(>>) :: MarkupT m a -> MarkupT m b -> MarkupT m b #

return :: a -> MarkupT m a #

Monad m => IsString (MarkupT m ()) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

fromString :: String -> MarkupT m () #

(Monad m, Semigroup a) => Semigroup (MarkupT m a) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

(<>) :: MarkupT m a -> MarkupT m a -> MarkupT m a #

sconcat :: NonEmpty (MarkupT m a) -> MarkupT m a #

stimes :: Integral b => b -> MarkupT m a -> MarkupT m a #

Monad m => Attributable (MarkupT m a) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

(!) :: MarkupT m a -> Attribute -> MarkupT m a #

Monad m => Attributable (a -> MarkupT m b) Source # 
Instance details

Defined in Text.BlazeT.Internal

Methods

(!) :: (a -> MarkupT m b) -> Attribute -> a -> MarkupT m b #

mapMarkupT :: (m (a, Markup) -> n (b, Markup)) -> MarkupT m a -> MarkupT n b Source #

Map both the return value and markup of a computation using the given function

type MarkupM a = forall m. Monad m => MarkupT m a Source #

type Markup2 = forall m. Monad m => MarkupT m () -> MarkupT m () Source #

runMarkupT :: MarkupT m a -> m (a, Markup) Source #

runWith :: Monad m => (MarkupI () -> c) -> MarkupT m a -> m (a, c) Source #

run the MarkupT and return a pair consisting of the result of the computation and the blaze markup rendered with a blaze renderer like renderHtml

execWith :: Monad m => (MarkupI () -> c) -> MarkupT m a -> m c Source #