hsp-0.8.0: Haskell Server Pages is a library for writing dynamic server-side web pages.

Portabilityrequires newtype deriving and MPTCs with fundeps
Stabilityexperimental
MaintainerNiklas Broberg, niklas.broberg@chalmers.se
Safe HaskellNone

HSP.XMLGenerator

Description

The class and monad transformer that forms the basis of the literal XML syntax translation. Literal tags will be translated into functions of the GenerateXML class, and any instantiating monads with associated XML types can benefit from that syntax.

Synopsis

Documentation

newtype XMLGenT m a Source

The monad transformer that allows a monad to generate XML values.

Constructors

XMLGenT (m a) 

Instances

MonadTrans XMLGenT 
(Monoid w, MonadReader r (XMLGenT m), MonadWriter w (XMLGenT m), MonadState s (XMLGenT m), MonadRWS r w s m) => MonadRWS r w s (XMLGenT m) 
(Monad (XMLGenT m), MonadError e m) => MonadError e (XMLGenT m) 
(Monad (XMLGenT m), MonadReader r m) => MonadReader r (XMLGenT m) 
(Monad (XMLGenT m), MonadState s m) => MonadState s (XMLGenT m) 
(Monoid w, Monad (XMLGenT m), MonadWriter w m) => MonadWriter w (XMLGenT m) 
(XMLGen m, AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) 
(XMLGen m, TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) 
(XMLGen m, EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) 
(XMLGen m, EmbedAsAttr m a) => EmbedAsAttr m (XMLGenT m a) 
(XMLGen m, EmbedAsChild m c, ~ (* -> *) m n) => EmbedAsChild m (XMLGenT n c) 
Monad m => Monad (XMLGenT m) 
Functor m => Functor (XMLGenT m) 
(Monad (XMLGenT m), MonadPlus m) => MonadPlus (XMLGenT m) 
(Functor (XMLGenT m), Applicative m) => Applicative (XMLGenT m) 
(Applicative (XMLGenT m), Alternative m) => Alternative (XMLGenT m) 
(Monad (XMLGenT m), MonadIO m) => MonadIO (XMLGenT m) 
(Monad (XMLGenT m), MonadCont m) => MonadCont (XMLGenT m) 

unXMLGenT :: XMLGenT m a -> m aSource

un-lift.

mapXMLGenT :: (m a -> n b) -> XMLGenT m a -> XMLGenT n bSource

map the inner monad

class Monad m => XMLGen m whereSource

Generate XML values in some XMLGenerator monad.

Associated Types

type XMLType m Source

data ChildType m Source

data AttributeType m Source

Instances

(Monad (HSPT XML m), Functor m, Monad m) => XMLGen (HSPT XML m) 

type GenXML m = XMLGenT m (XMLType m)Source

Type synonyms to avoid writing out the XMLnGenT all the time

class XMLGen m => EmbedAsChild m c whereSource

Embed values as child nodes of an XML element. The parent type will be clear from the context so it is not mentioned.

Methods

asChild :: c -> GenChildList mSource

Instances

XMLGen m => EmbedAsChild m () 
XMLGen m => EmbedAsChild m Text 
XMLGen m => EmbedAsChild m String 
(XMLGen m, ~ * (XMLType m) x) => EmbedAsChild m x 
XMLGen m => EmbedAsChild m (ChildType m) 
(XMLGen m, EmbedAsChild m c) => EmbedAsChild m [c] 
(XMLGen m, EmbedAsChild m c, ~ (* -> *) m n) => EmbedAsChild m (XMLGenT n c) 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) () 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) Char 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) Text 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) String 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) XML 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsChild (HSPT XML m) [XML] 

data Attr n a Source

Constructors

n := a 

Instances

(XMLGen m, EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) 
(Show n, Show a) => Show (Attr n a) 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) 
(XMLGen (HSPT XML m), Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) 
(XMLGen (HSPT XML m), Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) 

class XMLGen m => EmbedAsAttr m a whereSource

Similarly embed values as attributes of an XML element.

class XMLGen m => SetAttr m elem whereSource

Set attributes on XML elements

Methods

setAttr :: elem -> GenAttribute m -> GenXML mSource

setAll :: elem -> GenAttributeList m -> GenXML mSource

Instances

(XMLGen m, TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) 
(XMLGen (HSPT XML m), Functor m, Monad m) => SetAttr (HSPT XML m) XML 

(<@) :: (SetAttr m elem, EmbedAsAttr m attr) => elem -> attr -> GenXML mSource

set :: (SetAttr m elem, EmbedAsAttr m attr) => elem -> attr -> GenXML mSource

(<<@) :: (SetAttr m elem, EmbedAsAttr m a) => elem -> [a] -> GenXML mSource

class XMLGen m => AppendChild m elem whereSource

Methods

appChild :: elem -> GenChild m -> GenXML mSource

appAll :: elem -> GenChildList m -> GenXML mSource

Instances

(XMLGen m, AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) 
(XMLGen (HSPT XML m), Functor m, Monad m) => AppendChild (HSPT XML m) XML 

(<:) :: (AppendChild m elem, EmbedAsChild m c) => elem -> c -> GenXML mSource

app :: (AppendChild m elem, EmbedAsChild m c) => elem -> c -> GenXML mSource

(<<:) :: (AppendChild m elem, EmbedAsChild m c) => elem -> [c] -> GenXML mSource

class Show n => IsName n whereSource

Names can be simple or qualified with a domain. We want to conveniently use both simple strings or pairs wherever a Name is expected.

Methods

toName :: n -> NameSource

Instances

IsName String

Strings can represent names, meaning a simple name with no domain.

IsName Text

Strings can represent names, meaning a simple name with no domain.

IsName Name

Names can represent names, of course.

IsName (String, String)

Pairs of strings can represent names, meaning a name qualified with a domain.

IsName (Text, Text)

Pairs of strings can represent names, meaning a name qualified with a domain.

class TypeCast a b | a -> b, b -> a whereSource

Methods

typeCast :: a -> bSource

Instances

TypeCast' () a b => TypeCast a b 

class TypeCast' t a b | t a -> b, t b -> a whereSource

Methods

typeCast' :: t -> a -> bSource

Instances

TypeCast'' t a b => TypeCast' t a b 

class TypeCast'' t a b | t a -> b, t b -> a whereSource

Methods

typeCast'' :: t -> a -> bSource

Instances

TypeCast'' () a a 

class TypeCastM ma mb | ma -> mb, mb -> ma whereSource

Methods

typeCastM :: ma x -> mb xSource

Instances

TypeCastM' () ma mb => TypeCastM ma mb 

class TypeCastM' t ma mb | t ma -> mb, t mb -> ma whereSource

Methods

typeCastM' :: t -> ma x -> mb xSource

Instances

TypeCastM'' t ma mb => TypeCastM' t ma mb 

class TypeCastM'' t ma mb | t ma -> mb, t mb -> ma whereSource

Methods

typeCastM'' :: t -> ma x -> mb xSource

Instances

TypeCastM'' () ma ma