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

Copyright(c) Niklas Broberg 2008-2013
LicenseBSD-style (see the file LICENSE.txt)
MaintainerNiklas Broberg <niklas.broberg@gmail.com>
Stabilityexperimental
Portabilityrequires newtype deriving and MPTCs with fundeps and type families
Safe HaskellNone
LanguageHaskell98

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 #

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

Constructors

XMLGenT (m a) 

Instances

MonadTrans XMLGenT # 

Methods

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

MonadRWS r w s m => MonadRWS r w s (XMLGenT m) # 
MonadError e m => MonadError e (XMLGenT m) # 

Methods

throwError :: e -> XMLGenT m a #

catchError :: XMLGenT m a -> (e -> XMLGenT m a) -> XMLGenT m a #

MonadReader r m => MonadReader r (XMLGenT m) # 

Methods

ask :: XMLGenT m r #

local :: (r -> r) -> XMLGenT m a -> XMLGenT m a #

reader :: (r -> a) -> XMLGenT m a #

MonadState s m => MonadState s (XMLGenT m) # 

Methods

get :: XMLGenT m s #

put :: s -> XMLGenT m () #

state :: (s -> (a, s)) -> XMLGenT m a #

MonadWriter w m => MonadWriter w (XMLGenT m) # 

Methods

writer :: (a, w) -> XMLGenT m a #

tell :: w -> XMLGenT m () #

listen :: XMLGenT m a -> XMLGenT m (a, w) #

pass :: XMLGenT m (a, w -> w) -> XMLGenT m a #

(AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) # 

Methods

appChild :: XMLGenT m1 x -> GenChild m -> GenXML m #

appAll :: XMLGenT m1 x -> GenChildList m -> GenXML m #

(TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) # 

Methods

setAttr :: XMLGenT m1 x -> GenAttribute m -> GenXML m #

setAll :: XMLGenT m1 x -> GenAttributeList m -> GenXML m #

(EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) # 

Methods

asAttr :: Attr a (XMLGenT m1 v) -> GenAttributeList m #

(XMLGen m, EmbedAsAttr m a) => EmbedAsAttr m (XMLGenT m a) # 

Methods

asAttr :: XMLGenT m a -> GenAttributeList m #

(EmbedAsChild m c, (~) (* -> *) m n) => EmbedAsChild m (XMLGenT n c) # 

Methods

asChild :: XMLGenT n c -> GenChildList m #

Monad m => Monad (XMLGenT m) # 

Methods

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

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

return :: a -> XMLGenT m a #

fail :: String -> XMLGenT m a #

Functor m => Functor (XMLGenT m) # 

Methods

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

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

Applicative m => Applicative (XMLGenT m) # 

Methods

pure :: a -> XMLGenT m a #

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

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

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

MonadIO m => MonadIO (XMLGenT m) # 

Methods

liftIO :: IO a -> XMLGenT m a #

Alternative m => Alternative (XMLGenT m) # 

Methods

empty :: XMLGenT m a #

(<|>) :: XMLGenT m a -> XMLGenT m a -> XMLGenT m a #

some :: XMLGenT m a -> XMLGenT m [a] #

many :: XMLGenT m a -> XMLGenT m [a] #

MonadPlus m => MonadPlus (XMLGenT m) # 

Methods

mzero :: XMLGenT m a #

mplus :: XMLGenT m a -> XMLGenT m a -> XMLGenT m a #

MonadCont m => MonadCont (XMLGenT m) # 

Methods

callCC :: ((a -> XMLGenT m b) -> XMLGenT m a) -> XMLGenT m a #

unXMLGenT :: XMLGenT m a -> m a #

un-lift.

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

map the inner monad

type Name a = (Maybe a, a) #

class Monad m => XMLGen m where #

Generate XML values in some XMLGenerator monad.

Minimal complete definition

genElement, xmlToChild, pcdataToChild

Associated Types

type XMLType m #

type StringType m #

data ChildType m #

data AttributeType m #

Instances

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

Associated Types

type XMLType (HSPT XML m :: * -> *) :: * #

type StringType (HSPT XML m :: * -> *) :: * #

data ChildType (HSPT XML m :: * -> *) :: * #

data AttributeType (HSPT XML m :: * -> *) :: * #

type GenXML m = XMLGenT m (XMLType m) #

Type synonyms to avoid writing out the XMLnGenT all the time

type GenXMLList m = XMLGenT m [XMLType m] #

type GenChild m = XMLGenT m (ChildType m) #

class XMLGen m => EmbedAsChild m c where #

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

Minimal complete definition

asChild

Methods

asChild :: c -> GenChildList m #

Instances

XMLGen m => EmbedAsChild m () # 

Methods

asChild :: () -> GenChildList m #

(XMLGen m, (~) * (XMLType m) x) => EmbedAsChild m x # 

Methods

asChild :: x -> GenChildList m #

XMLGen m => EmbedAsChild m (ChildType m) # 

Methods

asChild :: ChildType m -> GenChildList m #

EmbedAsChild m c => EmbedAsChild m [c] # 

Methods

asChild :: [c] -> GenChildList m #

(EmbedAsChild m c, (~) (* -> *) m n) => EmbedAsChild m (XMLGenT n c) # 

Methods

asChild :: XMLGenT n c -> GenChildList m #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) () # 

Methods

asChild :: () -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) Char # 

Methods

asChild :: Char -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) Text # 

Methods

asChild :: Text -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) Text # 

Methods

asChild :: Text -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) String # 

Methods

asChild :: String -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) XML # 

Methods

asChild :: XML -> GenChildList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsChild (HSPT XML m) [XML] # 

Methods

asChild :: [XML] -> GenChildList (HSPT XML m) #

data Attr n a #

Constructors

n := a 

Instances

(EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) # 

Methods

asAttr :: Attr a (XMLGenT m1 v) -> GenAttributeList m #

(Show a, Show n) => Show (Attr n a) # 

Methods

showsPrec :: Int -> Attr n a -> ShowS #

show :: Attr n a -> String #

showList :: [Attr n a] -> ShowS #

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text ()) # 

Methods

asAttr :: Attr Text () -> GenAttributeList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text ()) # 

Methods

asAttr :: Attr Text () -> GenAttributeList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) # 
(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) # 
(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 

class XMLGen m => EmbedAsAttr m a where #

Similarly embed values as attributes of an XML element.

Minimal complete definition

asAttr

Methods

asAttr :: a -> GenAttributeList m #

Instances

EmbedAsAttr m a => EmbedAsAttr m [a] # 

Methods

asAttr :: [a] -> GenAttributeList m #

XMLGen m => EmbedAsAttr m (AttributeType m) # 
(EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) # 

Methods

asAttr :: Attr a (XMLGenT m1 v) -> GenAttributeList m #

(XMLGen m, EmbedAsAttr m a) => EmbedAsAttr m (XMLGenT m a) # 

Methods

asAttr :: XMLGenT m a -> GenAttributeList m #

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) Attribute # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text ()) # 

Methods

asAttr :: Attr Text () -> GenAttributeList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text ()) # 

Methods

asAttr :: Attr Text () -> GenAttributeList (HSPT XML m) #

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) # 
(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) # 
(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 
(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) # 

class XMLGen m => SetAttr m elem where #

Set attributes on XML elements

Minimal complete definition

setAll

Methods

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

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

Instances

(TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) # 

Methods

setAttr :: XMLGenT m1 x -> GenAttribute m -> GenXML m #

setAll :: XMLGenT m1 x -> GenAttributeList m -> GenXML m #

(Functor m, Monad m) => SetAttr (HSPT XML m) XML # 

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

prepend attr to the list of attributes for the elem

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

prepend attr to the list of attributes for the elem

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

prepend the list of attr to the attributes for the elem

class XMLGen m => AppendChild m elem where #

Minimal complete definition

appAll

Methods

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

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

Instances

(AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) # 

Methods

appChild :: XMLGenT m1 x -> GenChild m -> GenXML m #

appAll :: XMLGenT m1 x -> GenChildList m -> GenXML m #

(Functor m, Monad m) => AppendChild (HSPT XML m) XML # 

Methods

appChild :: XML -> GenChild (HSPT XML m) -> GenXML (HSPT XML m) #

appAll :: XML -> GenChildList (HSPT XML m) -> GenXML (HSPT XML m) #

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

append child to the children of elem

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

append child to the children of elem

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

append children to the children of elem

class Show n => IsName n s where #

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

Minimal complete definition

toName

Methods

toName :: n -> Name s #

Instances

IsName String String #

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

Methods

toName :: String -> Name String #

IsName String Text #

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

Methods

toName :: String -> Name Text #

IsName Text Text #

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

Methods

toName :: Text -> Name Text #

IsName Text Text #

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

Methods

toName :: Text -> Name Text #

Show a => IsName (Name a) a #

Names can represent names, of course.

Methods

toName :: Name a -> Name a #

IsName (String, String) Text #

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

Methods

toName :: (String, String) -> Name Text #

IsName (Text, Text) Text #

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

Methods

toName :: (Text, Text) -> Name Text #

IsName (Text, Text) Text #

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

Methods

toName :: (Text, Text) -> Name Text #

class TypeCast a b | a -> b, b -> a where #

Minimal complete definition

typeCast

Methods

typeCast :: a -> b #

Instances

TypeCast' () a b => TypeCast a b # 

Methods

typeCast :: a -> b #

class TypeCast' t a b | t a -> b, t b -> a where #

Minimal complete definition

typeCast'

Methods

typeCast' :: t -> a -> b #

Instances

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

Methods

typeCast' :: t -> a -> b #

class TypeCast'' t a b | t a -> b, t b -> a where #

Minimal complete definition

typeCast''

Methods

typeCast'' :: t -> a -> b #

Instances

TypeCast'' () a a # 

Methods

typeCast'' :: () -> a -> a #

class TypeCastM ma mb | ma -> mb, mb -> ma where #

Minimal complete definition

typeCastM

Methods

typeCastM :: ma x -> mb x #

Instances

TypeCastM' () ma mb => TypeCastM ma mb # 

Methods

typeCastM :: ma x -> mb x #

class TypeCastM' t ma mb | t ma -> mb, t mb -> ma where #

Minimal complete definition

typeCastM'

Methods

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

Instances

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

Methods

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

class TypeCastM'' t ma mb | t ma -> mb, t mb -> ma where #

Minimal complete definition

typeCastM''

Methods

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

Instances

TypeCastM'' () ma ma # 

Methods

typeCastM'' :: () -> ma x -> ma x #