hsx-0.6.1: HSX (Haskell Source with XML) allows literal XML syntax to be used in Haskell source code.Source codeContentsIndex
HSX.XMLGenerator
Portabilityrequires newtype deriving and MPTCs with fundeps
Stabilityexperimental
MaintainerNiklas Broberg, niklas.broberg@chalmers.se
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
newtype XMLGenT m a = XMLGenT (m a)
unXMLGenT :: XMLGenT m a -> m a
type Name = (Maybe String, String)
class Monad m => XMLGen m where
type XML m
data Child m
data Attribute m
genElement :: Name -> [XMLGenT m [Attribute m]] -> [XMLGenT m [Child m]] -> XMLGenT m (XML m)
genEElement :: Name -> [XMLGenT m [Attribute m]] -> XMLGenT m (XML m)
xmlToChild :: XML m -> Child m
type GenXML m = XMLGenT m (XML m)
type GenXMLList m = XMLGenT m [XML m]
type GenChild m = XMLGenT m (Child m)
type GenChildList m = XMLGenT m [Child m]
type GenAttribute m = XMLGenT m (Attribute m)
type GenAttributeList m = XMLGenT m [Attribute m]
class XMLGen m => EmbedAsChild m c where
asChild :: c -> GenChildList m
class XMLGen m => EmbedAsAttr m a where
asAttr :: a -> GenAttributeList m
class (XMLGen m, SetAttr m (XML m), AppendChild m (XML m), EmbedAsChild m String, EmbedAsChild m Char, EmbedAsAttr m (Attr String String), EmbedAsAttr m (Attr String Int), EmbedAsAttr m (Attr String Bool)) => XMLGenerator m
data Attr n a = n := a
class XMLGen m => SetAttr m elem where
setAttr :: elem -> GenAttribute m -> GenXML m
setAll :: elem -> GenAttributeList m -> GenXML m
set :: (SetAttr m elem, EmbedAsAttr m attr) => elem -> attr -> GenXML m
(<@) :: (SetAttr m elem, EmbedAsAttr m attr) => elem -> attr -> GenXML m
(<<@) :: (SetAttr m elem, EmbedAsAttr m a) => elem -> [a] -> GenXML m
class XMLGen m => AppendChild m elem where
appChild :: elem -> GenChild m -> GenXML m
appAll :: elem -> GenChildList m -> GenXML m
app :: (AppendChild m elem, EmbedAsChild m c) => elem -> c -> GenXML m
(<:) :: (AppendChild m elem, EmbedAsChild m c) => elem -> c -> GenXML m
(<<:) :: (AppendChild m elem, EmbedAsChild m c) => elem -> [c] -> GenXML m
class Show n => IsName n where
toName :: n -> Name
class TypeCast a b | a -> b, b -> a where
typeCast :: a -> b
class TypeCast' t a b | t a -> b, t b -> a where
typeCast' :: t -> a -> b
class TypeCast'' t a b | t a -> b, t b -> a where
typeCast'' :: t -> a -> b
class TypeCastM ma mb | ma -> mb, mb -> ma where
typeCastM :: ma x -> mb x
class TypeCastM' t ma mb | t ma -> mb, t mb -> ma where
typeCastM' :: t -> ma x -> mb x
class TypeCastM'' t ma mb | t ma -> mb, t mb -> ma where
typeCastM'' :: t -> ma x -> mb x
Documentation
newtype XMLGenT m a Source
The monad transformer that allows a monad to generate XML values.
Constructors
XMLGenT (m a)
show/hide Instances
unXMLGenT :: XMLGenT m a -> m aSource
un-lift.
type Name = (Maybe String, String)Source
class Monad m => XMLGen m whereSource
Generate XML values in some XMLGenerator monad.
Associated Types
type XML m Source
data Child m Source
data Attribute m Source
Methods
genElement :: Name -> [XMLGenT m [Attribute m]] -> [XMLGenT m [Child m]] -> XMLGenT m (XML m)Source
genEElement :: Name -> [XMLGenT m [Attribute m]] -> XMLGenT m (XML m)Source
xmlToChild :: XML m -> Child mSource
type GenXML m = XMLGenT m (XML m)Source
Type synonyms to avoid writing out the XMLnGenT all the time
type GenXMLList m = XMLGenT m [XML m]Source
type GenChild m = XMLGenT m (Child m)Source
type GenChildList m = XMLGenT m [Child m]Source
type GenAttribute m = XMLGenT m (Attribute m)Source
type GenAttributeList m = XMLGenT m [Attribute m]Source
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
show/hide Instances
(XML m ~ x, XMLGen m) => EmbedAsChild m x
XMLGen m => EmbedAsChild m (Child m)
EmbedAsChild m c => EmbedAsChild m [c]
(EmbedAsChild m c, TypeCastM m1 m) => EmbedAsChild m (XMLGenT m1 c)
class XMLGen m => EmbedAsAttr m a whereSource
Similarly embed values as attributes of an XML element.
Methods
asAttr :: a -> GenAttributeList mSource
show/hide Instances
class (XMLGen m, SetAttr m (XML m), AppendChild m (XML m), EmbedAsChild m String, EmbedAsChild m Char, EmbedAsAttr m (Attr String String), EmbedAsAttr m (Attr String Int), EmbedAsAttr m (Attr String Bool)) => XMLGenerator m Source
data Attr n a Source
Constructors
n := a
show/hide Instances
(Show n, Show a) => Show (Attr n a)
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
show/hide Instances
(TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x)
set :: (SetAttr m elem, EmbedAsAttr m attr) => elem -> attr -> GenXML mSource
(<@) :: (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
show/hide Instances
(AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x)
app :: (AppendChild m elem, EmbedAsChild m c) => elem -> c -> GenXML mSource
(<:) :: (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
show/hide Instances
class TypeCast a b | a -> b, b -> a whereSource
Methods
typeCast :: a -> bSource
show/hide Instances
TypeCast' () a b => TypeCast a b
class TypeCast' t a b | t a -> b, t b -> a whereSource
Methods
typeCast' :: t -> a -> bSource
show/hide 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
show/hide Instances
TypeCast'' () a a
class TypeCastM ma mb | ma -> mb, mb -> ma whereSource
Methods
typeCastM :: ma x -> mb xSource
show/hide 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
show/hide 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
show/hide Instances
TypeCastM'' () ma ma
Produced by Haddock version 2.6.0