Copyright | (c) Jonathan Merritt 2017 |
---|---|
License | BSD3 |
Maintainer | j.s.merritt@gmail.com |
Stability | Experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
- class GToElem e n a t z
- class GFromElem e n a t z
- data OptionsElement n a = OptionsElement {
- optConstructorElemName :: Text -> n
- optSelectorElemName :: Text -> n
- optAttrName :: Text -> a
- optReadNodeOrdering :: ReadNodeOrdering
- optReadLeftovers :: ReadLeftovers
- data ReadNodeOrdering
- data ReadLeftovers
- genericToElem :: (Generic z, GToElem e n a t (Rep z)) => OptionsElement n a -> Compose e n a t c -> z -> e
- genericFromElem :: (Generic z, GFromElem e n a t (Rep z), Eq n) => OptionsElement n a -> Decompose e n a t d -> e -> Result e n a t z
- genericConv :: (Generic a, Generic b, GConv (Rep a) (Rep b)) => a -> b
Classes
class GToElem e n a t z Source #
Class for generically converting a type to an element.
gToElem
GToElem e n a t U1 Source # | U1 - no-argument constructor. |
ToElem e z => GToElem e n a t (S1 q (Rec0 [z])) Source # | S1 (named or unnamed) + [z] - record selector for a list of ToElem child nodes. |
ToElem e z => GToElem e n a t (S1 q (Rec0 (Maybe z))) Source # | S1 (named or unnamed) + Maybe z - record selector for a ToElem child. |
ToElem e z => GToElem e n a t (S1 q (Rec0 z)) Source # | S1 (named or unnamed) - record selector for a ToElem child. |
ToXText t z => GToElem e n a t (S1 q (Rec0 (CData [z]))) Source # | S1 (named or unnamed) + [CData] - record selector for a list of CDATA child nodes. |
ToXText t z => GToElem e n a t (S1 q (Rec0 (CData (Maybe z)))) Source # | S1 (named or unnamed) + CData Maybe - record selector for an optional CDATA child node. |
ToXText t z => GToElem e n a t (S1 q (Rec0 (CData z))) Source # | S1 (named or unnamed) + CData - record selector for a CDATA child node. |
ToXText t z => GToElem e n a t (S1 q (Rec0 (Content (Maybe z)))) Source # | S1 (named or unnamed) + Content Maybe - record selector for an optional content node. |
ToXText t z => GToElem e n a t (S1 q (Rec0 (Content z))) Source # | S1 (named or unnamed) + Content - record selector for a content node. |
(KnownSymbol name, ToXText t z) => GToElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child [z]))) Source # | S1 (named) + [Child] - record selector for a list of simple child elements with text. |
(KnownSymbol name, ToXText t z) => GToElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child (Maybe z)))) Source # | S1 (named) + Child Maybe - record selector for an optional simple child element with text. |
(KnownSymbol name, ToXText t z) => GToElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child z))) Source # | S1 (named) + Child - record selector for a simple child element with text. |
(KnownSymbol name, ToXText t z) => GToElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Attr (Maybe z)))) Source # | S1 (named) + Attr Maybe - record selector for optional XML attribute. |
(KnownSymbol name, ToXText t z) => GToElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Attr z))) Source # | S1 (named) + Attr - record selector for an XML attribute. |
(GToElem e n a t z1, GToElem e n a t z2) => GToElem e n a t ((:+:) z1 z2) Source # | Sum type (ie. multiple constructors). |
(GToElem e n a t z1, GToElem e n a t z2) => GToElem e n a t ((:*:) z1 z2) Source # | Product type (ie. multiple fields). |
(KnownSymbol name, GToElem e n a t z) => GToElem e n a t (C1 (MetaCons name q w) z) Source # | C1 - constructor. The name of the element is obtained from the constructor name. |
(KnownSymbol name, ToElem e z) => GToElem e n a t (D1 (MetaData g h i True) (C1 (MetaCons name q w) (S1 s (Rec0 z)))) Source # | Newtype. A newtype should be processed in the same way as the type it wraps, but the name of the element must be changed at the end. |
GToElem e n a t z => GToElem e n a t (D1 (MetaData g h i False) z) Source # | D1 - Datatype (non-newtype). When we encounter a Datatype, just proceed directly to processing its contents, without any additional handling. |
class GFromElem e n a t z Source #
Class for generically converting an element to a type.
gFromElem
GFromElem e n a t U1 Source # | U1 - no-argument constructor. |
FromElem e n a t z => GFromElem e n a t (S1 q (Rec0 [z])) Source # | S1 (named or unnamed) + List - record selector for a list of |
FromElem e n a t z => GFromElem e n a t (S1 q (Rec0 (Maybe z))) Source # | S1 (named or unnamed) + Maybe - record selector for an optional |
FromElem e n a t z => GFromElem e n a t (S1 q (Rec0 z)) Source # | S1 (named or unnamed) - record selector for a |
FromXText t z => GFromElem e n a t (S1 q (Rec0 (CData [z]))) Source # | S1 (named or unnamed) + [CData] - record selector for a list of CDATA child nodes. |
FromXText t z => GFromElem e n a t (S1 q (Rec0 (CData (Maybe z)))) Source # | S1 (named or unnamed) + CData Maybe - record selector for an optional CDATA child node. |
FromXText t z => GFromElem e n a t (S1 q (Rec0 (CData z))) Source # | S1 (named or unnamed) + CData - record selector for a CDATA child node. |
FromXText t z => GFromElem e n a t (S1 q (Rec0 (Content (Maybe z)))) Source # | S1 (named or unnamed) + Content Maybe - record selector for an optional content child. |
FromXText t z => GFromElem e n a t (S1 q (Rec0 (Content z))) Source # | S1 (named or unnamed) + Content - record selector for a content child. |
(KnownSymbol name, FromXText t z) => GFromElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child [z]))) Source # | S1 (named) + [Child] - record selector for a list of child elements with text content. |
(KnownSymbol name, FromXText t z) => GFromElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child (Maybe z)))) Source # | S1 (named) + Child Maybe - record selector for a simple optional child element with text content. |
(KnownSymbol name, FromXText t z) => GFromElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Child z))) Source # | S1 (named) + Child - record selector for a simple child element with text content. |
(KnownSymbol name, FromXText t z) => GFromElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Attr (Maybe z)))) Source # | S1 (named) + Attr Maybe - record selector for an optional XML attribute. |
(KnownSymbol name, FromXText t z) => GFromElem e n a t (S1 (MetaSel (Just Symbol name) g h i) (Rec0 (Attr z))) Source # | S1 (named) + Attr - record selector for an XML attribute. |
(GFromElem e n a t z1, GFromElem e n a t z2) => GFromElem e n a t ((:+:) z1 z2) Source # | Sum type (ie. multiple constructors). |
(GFromElem e n a t z1, GFromElem e n a t z2) => GFromElem e n a t ((:*:) z1 z2) Source # | Product type (ie. multiple fields). |
(KnownSymbol name, Eq n, GFromElem e n a t z) => GFromElem e n a t (C1 (MetaCons name q w) z) Source # | C1 - constructor. |
(Generic z, GSingleConstructorName (Rep z), KnownSymbol name, FromElem e n a t z) => GFromElem e n a t (D1 (MetaData g h i True) (C1 (MetaCons name q w) (S1 s (Rec0 z)))) Source # | Newtype. A newtype should appear the same as the type it wraps, but the name of the element is expected to be different. To read a newtype, there are some shenanigans involved: 1. Check that the actual element name matches the newtype's constructor. 2. Rename the element to the original, wrapped type. The original type must have ONLY ONE constructor, otherwise we wouldn't know what the element should be renamed to. 3. Read in the original element and wrap it in the newtype constructor. |
GFromElem e n a t z => GFromElem e n a t (D1 (MetaData g h i False) z) Source # | D1 - Datatype (non-newtype). |
Types
data OptionsElement n a Source #
Options for generating ToElem
and FromElem
instances using GHC
Generics.
Type parameters:
n
- Type for an element name.a
- Type for an attribute name.
OptionsElement | |
|
data ReadNodeOrdering Source #
Specifies how child nodes should be treated when reading a type from an element.
data ReadLeftovers Source #
Specifies how any left-over parts of an element should be treated when reading a type from an element.
LeftoversOK | Left-over parts of an element are OK, and not an error. |
LeftoversError | Left-over parts of an element should produce an error. |
Generic instance creation
genericToElem :: (Generic z, GToElem e n a t (Rep z)) => OptionsElement n a -> Compose e n a t c -> z -> e Source #
Generic producer for a ToElem
instance.