Portability | requires newtype deriving and MPTCs with fundeps |
---|---|
Stability | experimental |
Maintainer | Niklas Broberg, niklas.broberg@chalmers.se |
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.
- newtype XMLGenT m a = XMLGenT (m a)
- unXMLGenT :: XMLGenT m a -> m a
- mapXMLGenT :: (m a -> n b) -> XMLGenT m a -> XMLGenT n b
- type Name = (Maybe String, String)
- class Monad m => XMLGen m where
- 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 (XML m), EmbedAsChild 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 a) => elem -> [a] -> GenXML m
- class XMLGen m => AppendChild m elem where
- (<:), app :: (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
- 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
The monad transformer that allows a monad to generate XML values.
XMLGenT (m a) |
MonadTrans XMLGenT | |
MonadRWS r w s m => MonadRWS r w s (XMLGenT m) | |
MonadError e m => MonadError e (XMLGenT m) | |
MonadReader r m => MonadReader r (XMLGenT m) | |
MonadState s m => MonadState s (XMLGenT m) | |
MonadWriter w m => MonadWriter w (XMLGenT m) | |
(AppendChild m x, TypeCastM m1 m) => AppendChild m (XMLGenT m1 x) | |
(TypeCastM m1 m, SetAttr m x) => SetAttr m (XMLGenT m1 x) | |
(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) | |
(m ~ n, EmbedAsChild m c) => EmbedAsChild m (XMLGenT n c) | |
Monad m => Monad (XMLGenT m) | |
Functor m => Functor (XMLGenT m) | |
MonadPlus m => MonadPlus (XMLGenT m) | |
Applicative m => Applicative (XMLGenT m) | |
Alternative m => Alternative (XMLGenT m) | |
MonadIO m => MonadIO (XMLGenT m) | |
MonadCont m => MonadCont (XMLGenT m) |
mapXMLGenT :: (m a -> n b) -> XMLGenT m a -> XMLGenT n bSource
map the inner monad
type GenXMLList m = XMLGenT m [XML 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.
asChild :: c -> GenChildList mSource
XMLGen m => EmbedAsChild m String | |
(XML m ~ x, XMLGen m) => EmbedAsChild m x | |
XMLGen m => EmbedAsChild m (Child m) | |
EmbedAsChild m c => EmbedAsChild m [c] | |
(m ~ n, EmbedAsChild m c) => EmbedAsChild m (XMLGenT n c) |
class XMLGen m => EmbedAsAttr m a whereSource
Similarly embed values as attributes of an XML element.
asAttr :: a -> GenAttributeList mSource
EmbedAsAttr m a => EmbedAsAttr m [a] | |
XMLGen m => EmbedAsAttr m (Attribute 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) |
class (XMLGen m, SetAttr m (XML m), AppendChild m (XML m), EmbedAsChild m (XML m), EmbedAsChild 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
n := a |
(EmbedAsAttr m (Attr a v), TypeCastM m1 m) => EmbedAsAttr m (Attr a (XMLGenT m1 v)) | |
(Show n, Show a) => Show (Attr n a) |
class XMLGen m => SetAttr m elem whereSource
Set attributes on XML elements
setAttr :: elem -> GenAttribute m -> GenXML mSource
setAll :: elem -> GenAttributeList m -> GenXML mSource
(<<@) :: (SetAttr m elem, EmbedAsAttr m a) => elem -> [a] -> GenXML mSource
class XMLGen m => AppendChild m elem whereSource
(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
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.
class TypeCast' t a b | t a -> b, t b -> a whereSource
TypeCast'' t a b => TypeCast' t a b |
class TypeCast'' t a b | t a -> b, t b -> a whereSource
typeCast'' :: t -> a -> bSource
TypeCast'' () a a |
class TypeCastM ma mb | ma -> mb, mb -> ma whereSource
TypeCastM' () ma mb => TypeCastM ma mb |
class TypeCastM' t ma mb | t ma -> mb, t mb -> ma whereSource
typeCastM' :: t -> ma x -> mb xSource
TypeCastM'' t ma mb => TypeCastM' t ma mb |
class TypeCastM'' t ma mb | t ma -> mb, t mb -> ma whereSource
typeCastM'' :: t -> ma x -> mb xSource
TypeCastM'' () ma ma |