Happstack.Data.Xml
- data Element
- insEl :: (Data XmlD a, Default a, Data NormalizeD a, Data XmlD b, Default b, Data NormalizeD b) => a -> b -> Element
- fromXml :: forall m a. (Monad m, Xml a) => Rigidity m -> [Element] -> m a
- data Other b
- toPublicXml :: Xml a => a -> [Element]
- data Rigidity m where
- data XmlD a = XmlD {}
- class (Data XmlD a, Default a, Normalize a) => Xml a where
- xmlProxy :: Proxy XmlD
- defaultToXml :: Xml t => t -> [Element]
- transparentToXml :: Xml t => t -> [Element]
- transparentReadXml :: forall m t. (Monad m, Xml t) => Rigidity m -> [Element] -> Maybe ([Element], t)
- transparentXml :: Name -> Q [Dec]
- defaultReadXml :: (Monad m, Xml t) => Rigidity m -> [Element] -> Maybe ([Element], t)
- defaultReadXml' :: (Monad m, Xml t) => Rigidity m -> [Element] -> Maybe ([Element], t)
- readXmlWith :: Xml t => (Rigidity m -> Element -> Maybe t) -> Rigidity m -> [Element] -> Maybe ([Element], t)
- readVersionedElement :: forall m t. (Monad m, Xml t) => Rigidity m -> Element -> Maybe t
- isTheAttr :: String -> Element -> Bool
- getAttr :: String -> [Element] -> Maybe (String, [Element])
- versionAttr :: String
- typeAttr :: String
- readElement :: forall m t. (Monad m, Xml t) => Rigidity m -> Element -> Maybe t
- aConstrFromElements :: forall m t. (Monad m, Xml t) => Rigidity m -> [Constr] -> [Element] -> Maybe ([Element], t)
- constrFromElementsNoRootDefault :: forall m t. (Monad m, Xml t) => Rigidity m -> Constr -> [Element] -> Maybe ([Element], t)
- constrFromElements :: forall m t. (Monad m, Xml t) => Rigidity m -> Constr -> [Element] -> m ([Element], t)
- getXmls :: Monad m => ReadM m [Element]
- putXmls :: Monad m => [Element] -> ReadM m ()
- readMXml :: (Monad m, Xml a) => Rigidity m -> ReadM m a
- readMXmlNoRootDefault :: (Monad m, Xml a) => Rigidity m -> ReadM Maybe a
- xmlAttr :: Name -> Q [Dec]
- xmlShowCDatas :: [Name] -> Q [Dec]
- xmlShowCData :: Name -> Q [Dec]
- xmlCDataLists :: [Name] -> Q [Dec]
- xmlCDataList :: Name -> Q [Dec]
- noCommas :: String -> String
- typeNotValue :: Xml a => a -> a
Documentation
data Element
Element recursively represents XML data. Elem n elems -> XML element with name n and described by elems. Note that elems contains sub-elements as well as the attributes or literal data of the element. CData d -> Literal string data Attr key val -> Key/Value pair of the element attribute.
insEl :: (Data XmlD a, Default a, Data NormalizeD a, Data XmlD b, Default b, Data NormalizeD b) => a -> b -> Element
insEl a b will convert a to xml and insert it into the xml of b if b results in an Elem constructor.
fromXml :: forall m a. (Monad m, Xml a) => Rigidity m -> [Element] -> m a
Wrapper around the Xml class method readXml. The Rigidity will determine the behavior in the case of a failed parsing: Rigid will return Nothing and Flexible will return Identity (defaultValue)
toPublicXml :: Xml a => a -> [Element]
Identical to toXml from Xml class except that it will remove attributes named haskellType or haskellTypeVersion
data Rigidity m where
Rigidity is used to designate the result of a failed Xml parsing.
class (Data XmlD a, Default a, Normalize a) => Xml a where
Methods
readXml :: Monad m => Rigidity m -> [Element] -> Maybe ([Element], a)
readXml' :: Monad m => Rigidity m -> [Element] -> Maybe ([Element], a)
normalizeXml :: a -> [Element] -> [Element]
otherVersion :: a -> Other a
Instances
Xml Bool | |
Xml Char | |
Xml Double | |
Xml Float | |
Xml Int | |
Xml Integer | |
Xml String | |
Xml () | |
(Data XmlD t, Default t, Normalize t) => Xml t | |
Xml ByteString | |
Xml Element | |
Xml [Double] | |
Xml [Float] | |
Xml [Int] | |
Xml [Integer] | |
Xml [String] | |
(Xml a, Xml [a]) => Xml [a] | |
Xml a => Xml (Maybe a) | |
(Xml a[aiXn], Xml a[aiXo]) => Xml (Either a[aiXn] a[aiXo]) | |
(Xml a[aiZ2], Xml a[aiZ3]) => Xml (a[aiZ2], a[aiZ3]) | |
(Xml a[aiZY], Xml a[aiZZ], Xml a[aj00]) => Xml (a[aiZY], a[aiZZ], a[aj00]) | |
(Xml a[aj0Z], Xml a[aj10], Xml a[aj11], Xml a[aj12]) => Xml (a[aj0Z], a[aj10], a[aj11], a[aj12]) |
defaultToXml :: Xml t => t -> [Element]
Converts the argument to an Xml element with the constructor name as the root of the Elem and the additional attributes corresponding to haskellType and haskellTypeVersion added
transparentToXml :: Xml t => t -> [Element]
Generically traverses an instance of Xml and converts it into a list of elements
transparentReadXml :: forall m t. (Monad m, Xml t) => Rigidity m -> [Element] -> Maybe ([Element], t)
Attempts to parse the set of elements and return the first constructor it can successfully parse of the inferred type.
transparentXml :: Name -> Q [Dec]
Create an Xml instance using transparentToXml and transparentReadXml
readXmlWith :: Xml t => (Rigidity m -> Element -> Maybe t) -> Rigidity m -> [Element] -> Maybe ([Element], t)
isTheAttr :: String -> Element -> Bool
Matches the provided string to the key of an attribute. Returns False if any other Element constructor is given.
getAttr :: String -> [Element] -> Maybe (String, [Element])
Fetch the value of the given attribute if present, if not present will return Nothing
Attribute used for Xml class version information
aConstrFromElements :: forall m t. (Monad m, Xml t) => Rigidity m -> [Constr] -> [Element] -> Maybe ([Element], t)
aConstrFromElements will return the results of the first constructor that parses correctly.
constrFromElementsNoRootDefault :: forall m t. (Monad m, Xml t) => Rigidity m -> Constr -> [Element] -> Maybe ([Element], t)
Like constrFromElements but does not allow defaulting in case of a parse error.
constrFromElements :: forall m t. (Monad m, Xml t) => Rigidity m -> Constr -> [Element] -> m ([Element], t)
Attempts to parse the given elements to build the particular type given by the constructor argument.
readMXml :: (Monad m, Xml a) => Rigidity m -> ReadM m a
Attempts to parse the current set of elements. If it fails the behavior is dependent on the Rigidity. If it is Rigid, then it will return Nothing but if it is Flexible it will return the defaultValue. If the parsing succeeds, it will return the value and store the remaining XML elements in the parser state.
readMXmlNoRootDefault :: (Monad m, Xml a) => Rigidity m -> ReadM Maybe a
Identical to readMXml except that in the case of a failed parsing it will not use defaultValue.
xmlShowCDatas :: [Name] -> Q [Dec]
xmlShowCData lifted to act on lists
xmlShowCData :: Name -> Q [Dec]
automatically creates an Xml definition for a type that is an instance of Show and Read. This will result in an instance that converts the type to and from CData.
xmlCDataLists :: [Name] -> Q [Dec]
xmlCDataLists lifted to act on lists
xmlCDataList :: Name -> Q [Dec]
Creates an instance similar to xmlShowCData except for lists of the provided type
typeNotValue :: Xml a => a -> a
Throws an error when called