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 HaskellSafe-Inferred
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 Source #

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

Constructors

XMLGenT (m a) 

Instances

Instances details
MonadTrans XMLGenT Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

(MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

MonadError e m => MonadError e (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

throwError :: e -> XMLGenT m a Source #

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

MonadReader r m => MonadReader r (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

ask :: XMLGenT m r Source #

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

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

MonadState s m => MonadState s (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

get :: XMLGenT m s Source #

put :: s -> XMLGenT m () Source #

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

MonadWriter w m => MonadWriter w (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

tell :: w -> XMLGenT m () Source #

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

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

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

Defined in HSP.XMLGenerator

Methods

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

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

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

Defined in HSP.XMLGenerator

Methods

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

(XMLGen m, EmbedAsAttr m a) => EmbedAsAttr m (XMLGenT m a) Source # 
Instance details

Defined in HSP.XMLGenerator

(EmbedAsChild m c, m ~ n) => EmbedAsChild m (XMLGenT n c) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asChild :: XMLGenT n c -> GenChildList m Source #

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

Defined in HSP.XMLGenerator

MonadIO m => MonadIO (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

liftIO :: IO a -> XMLGenT m a Source #

Alternative m => Alternative (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

empty :: XMLGenT m a Source #

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

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

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

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

Defined in HSP.XMLGenerator

Methods

pure :: a -> XMLGenT m a Source #

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

liftA2 :: (a -> b -> c) -> XMLGenT m a -> XMLGenT m b -> XMLGenT m c Source #

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

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

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

Defined in HSP.XMLGenerator

Methods

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

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

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

Defined in HSP.XMLGenerator

Methods

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

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

return :: a -> XMLGenT m a Source #

MonadPlus m => MonadPlus (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

mzero :: XMLGenT m a Source #

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

MonadCont m => MonadCont (XMLGenT m) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

unXMLGenT :: XMLGenT m a -> m a Source #

un-lift.

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

map the inner monad

type Name a = (Maybe a, a) Source #

class Monad m => XMLGen m where Source #

Generate XML values in some XMLGenerator monad.

Minimal complete definition

genElement, xmlToChild, pcdataToChild

Associated Types

type XMLType m Source #

type StringType m Source #

data ChildType m Source #

data AttributeType m Source #

Instances

Instances details
(Functor m, Monad m) => XMLGen (HSPT XML m) Source # 
Instance details

Defined in HSP.Monad

Associated Types

type XMLType (HSPT XML m) Source #

type StringType (HSPT XML m) Source #

data ChildType (HSPT XML m) Source #

data AttributeType (HSPT XML m) Source #

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 where Source #

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 m Source #

Instances

Instances details
XMLGen m => EmbedAsChild m () Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asChild :: () -> GenChildList m Source #

(XMLGen m, XMLType m ~ x) => EmbedAsChild m x Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asChild :: x -> GenChildList m Source #

XMLGen m => EmbedAsChild m (ChildType m) Source # 
Instance details

Defined in HSP.XMLGenerator

EmbedAsChild m c => EmbedAsChild m [c] Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asChild :: [c] -> GenChildList m Source #

(EmbedAsChild m c, m ~ n) => EmbedAsChild m (XMLGenT n c) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asChild :: XMLGenT n c -> GenChildList m Source #

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

Methods

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

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

Defined in HSP.Monad

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

Defined in HSP.Monad

Methods

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

data Attr n a Source #

Constructors

n := a 

Instances

Instances details
(EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

(Show n, Show a) => Show (Attr n a) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

show :: Attr n a -> String Source #

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

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) Source # 
Instance details

Defined in HSP.Monad

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) Source # 
Instance details

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) Source # 
Instance details

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) Source # 
Instance details

Defined in HSP.Monad

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) Source # 
Instance details

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) Source # 
Instance details

Defined in HSP.Monad

class XMLGen m => EmbedAsAttr m a where Source #

Similarly embed values as attributes of an XML element.

Methods

asAttr :: a -> GenAttributeList m Source #

Instances

Instances details
XMLGen m => EmbedAsAttr m (AttributeType m) Source # 
Instance details

Defined in HSP.XMLGenerator

EmbedAsAttr m a => EmbedAsAttr m [a] Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

asAttr :: [a] -> GenAttributeList m Source #

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

Defined in HSP.XMLGenerator

Methods

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

(XMLGen m, EmbedAsAttr m a) => EmbedAsAttr m (XMLGenT m a) Source # 
Instance details

Defined in HSP.XMLGenerator

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) Attribute Source # 
Instance details

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) Source # 
Instance details

Defined in HSP.Monad

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) Source # 
Instance details

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) Source # 
Instance details

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

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

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) Source # 
Instance details

Defined in HSP.Monad

(Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) Source # 
Instance details

Defined in HSP.Monad

(Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) Source # 
Instance details

Defined in HSP.Monad

class (XMLGen m, SetAttr m (XMLType m), AppendChild m (XMLType m), EmbedAsChild m (XMLType m), EmbedAsChild m [XMLType m], EmbedAsChild m Text, EmbedAsChild m Char, EmbedAsChild m (), EmbedAsAttr m (Attr Text Text), EmbedAsAttr m (Attr Text Int), EmbedAsAttr m (Attr Text Bool)) => XMLGenerator m Source #

Instances

Instances details
(Functor m, Monad m) => XMLGenerator (HSPT XML m) Source # 
Instance details

Defined in HSP.Monad

class XMLGen m => SetAttr m elem where Source #

Set attributes on XML elements

Minimal complete definition

setAll

Methods

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

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

Instances

Instances details
(TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) Source # 
Instance details

Defined in HSP.XMLGenerator

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

Defined in HSP.Monad

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

prepend attr to the list of attributes for the elem

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

prepend attr to the list of attributes for the elem

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

prepend the list of attr to the attributes for the elem

class XMLGen m => AppendChild m elem where Source #

Minimal complete definition

appAll

Methods

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

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

Instances

Instances details
(AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

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

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

Defined in HSP.Monad

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

append child to the children of elem

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

append child to the children of elem

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

append children to the children of elem

class Show n => IsName n s where Source #

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 -> Name s Source #

Instances

Instances details
IsName Text Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

toName :: Text -> Name Text0 Source #

IsName Text Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

toName :: Text -> Name Text Source #

IsName String Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

toName :: String -> Name Text Source #

IsName String String Source #

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

Instance details

Defined in HSP.XMLGenerator

Show a => IsName (Name a) a Source #

Names can represent names, of course.

Instance details

Defined in HSP.XMLGenerator

Methods

toName :: Name a -> Name a Source #

IsName (Text, Text) Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

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

IsName (Text, Text) Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

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

IsName (String, String) Text Source #

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

Instance details

Defined in HSP.XMLGenerator

Methods

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

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

Methods

typeCast :: a -> b Source #

Instances

Instances details
TypeCast' () a b => TypeCast a b Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

typeCast :: a -> b Source #

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

Methods

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

Instances

Instances details
TypeCast'' t a b => TypeCast' t a b Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

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

Methods

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

Instances

Instances details
TypeCast'' () a a Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

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

Methods

typeCastM :: ma x -> mb x Source #

Instances

Instances details
TypeCastM' () ma mb => TypeCastM ma mb Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

typeCastM :: ma x -> mb x Source #

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

Methods

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

Instances

Instances details
TypeCastM'' t ma mb => TypeCastM' t ma mb Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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

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

Methods

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

Instances

Instances details
TypeCastM'' () ma ma Source # 
Instance details

Defined in HSP.XMLGenerator

Methods

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