module Text.XML.WraXML.String.HXT where import qualified Text.XML.HXT.DOM.TypeDefs as HXT import qualified Data.Tree.NTree.TypeDefs as HXTTree import qualified Text.XML.WraXML.String as XmlString import qualified Text.XML.Basic.Character as XmlChar toXmlString :: HXT.XmlTrees -> XmlString.T toXmlString :: XmlTrees -> T toXmlString = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap XmlTree -> T toXmlString' toXmlString' :: HXT.XmlTree -> XmlString.T toXmlString' :: XmlTree -> T toXmlString' (HXTTree.NTree XNode label XmlTrees subTrees) = if forall (t :: * -> *) a. Foldable t => t a -> Bool null XmlTrees subTrees then case XNode label of HXT.XText String str -> String -> T XmlString.fromString String str HXT.XCharRef Int ref -> [Int -> T XmlChar.fromCharRef Int ref] HXT.XEntityRef String ref -> [String -> T XmlChar.fromEntityRef String ref] XNode _ -> forall a. HasCallStack => String -> a error String "HXT: illegal part of HXT string" else forall a. HasCallStack => String -> a error String "HXT: parts of a string must not contain sub-strings" fromXmlString :: XmlString.T -> HXT.XmlTrees fromXmlString :: T -> XmlTrees fromXmlString = forall a b. (a -> b) -> [a] -> [b] map (forall a b c. (a -> b -> c) -> b -> a -> c flip forall a. a -> NTrees a -> NTree a HXTTree.NTree []) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (String -> a) -> (Int -> a) -> (String -> a) -> T -> [a] XmlChar.switchUnicodeRuns String -> XNode HXT.XText Int -> XNode HXT.XCharRef String -> XNode HXT.XEntityRef