module Text.XML.HXT.Arrow.XmlArrow
( module Text.XML.HXT.Arrow.XmlArrow )
where
import Control.Arrow
import Control.Arrow.ArrowList
import Control.Arrow.ArrowIf
import Control.Arrow.ArrowTree
import Control.Arrow.ListArrow
import Control.Arrow.StateListArrow
import Control.Arrow.IOListArrow
import Control.Arrow.IOStateListArrow
import Data.Char.Properties.XMLCharProps ( isXmlSpaceChar )
import Data.Maybe
import Text.XML.HXT.DOM.Interface
import qualified Text.XML.HXT.DOM.XmlNode as XN
import qualified Text.XML.HXT.DOM.ShowXml as XS
infixl 7 +=
class (Arrow a, ArrowList a, ArrowTree a) => ArrowXml a where
isText :: a XmlTree XmlTree
isText = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isText
{-# INLINE isText #-}
isBlob :: a XmlTree XmlTree
isBlob = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isBlob
{-# INLINE isBlob #-}
isCharRef :: a XmlTree XmlTree
isCharRef = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isCharRef
{-# INLINE isCharRef #-}
isEntityRef :: a XmlTree XmlTree
isEntityRef = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isEntityRef
{-# INLINE isEntityRef #-}
isCmt :: a XmlTree XmlTree
isCmt = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isCmt
{-# INLINE isCmt #-}
isCdata :: a XmlTree XmlTree
isCdata = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isCdata
{-# INLINE isCdata #-}
isPi :: a XmlTree XmlTree
isPi = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isPi
{-# INLINE isPi #-}
isXmlPi :: a XmlTree XmlTree
isXmlPi = forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isPi forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
"xml"
isElem :: a XmlTree XmlTree
isElem = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isElem
{-# INLINE isElem #-}
isDTD :: a XmlTree XmlTree
isDTD = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isDTD
{-# INLINE isDTD #-}
isAttr :: a XmlTree XmlTree
isAttr = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isAttr
{-# INLINE isAttr #-}
isError :: a XmlTree XmlTree
isError = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isError
{-# INLINE isError #-}
isRoot :: a XmlTree XmlTree
isRoot = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA forall a. XmlNode a => a -> Bool
XN.isRoot
{-# INLINE isRoot #-}
hasText :: (String -> Bool) -> a XmlTree XmlTree
hasText String -> Bool
p = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isText forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => a XmlTree String
getText forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA String -> Bool
p) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
isWhiteSpace :: a XmlTree XmlTree
isWhiteSpace = forall (a :: * -> * -> *).
ArrowXml a =>
(String -> Bool) -> a XmlTree XmlTree
hasText (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
isXmlSpaceChar)
{-# INLINE isWhiteSpace #-}
hasNameWith :: (QName -> Bool) -> a XmlTree XmlTree
hasNameWith QName -> Bool
p = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree QName
getQName forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA QName -> Bool
p) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasNameWith #-}
hasQName :: QName -> a XmlTree XmlTree
hasQName QName
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree QName
getQName forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Eq a => a -> a -> Bool
== QName
n)) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasQName #-}
hasName :: String -> a XmlTree XmlTree
hasName String
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree String
getName forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Eq a => a -> a -> Bool
== String
n)) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasName #-}
hasLocalPart :: String -> a XmlTree XmlTree
hasLocalPart String
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree String
getLocalPart forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Eq a => a -> a -> Bool
== String
n)) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasLocalPart #-}
hasNamePrefix :: String -> a XmlTree XmlTree
hasNamePrefix String
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree String
getNamePrefix forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Eq a => a -> a -> Bool
== String
n)) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasNamePrefix #-}
hasNamespaceUri :: String -> a XmlTree XmlTree
hasNamespaceUri String
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree String
getNamespaceUri forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Eq a => a -> a -> Bool
== String
n)) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasNamespaceUri #-}
hasAttr :: String -> a XmlTree XmlTree
hasAttr String
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
n) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasAttr #-}
hasQAttr :: QName -> a XmlTree XmlTree
hasQAttr QName
n = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
hasQName QName
n) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
{-# INLINE hasQAttr #-}
hasAttrValue :: String -> (String -> Bool) -> a XmlTree XmlTree
hasAttrValue String
n String -> Bool
p = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA String -> Bool
p) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
hasQAttrValue :: QName -> (String -> Bool) -> a XmlTree XmlTree
hasQAttrValue QName
n String -> Bool
p = (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
hasQName QName
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA String -> Bool
p) forall (a :: * -> * -> *) b c d.
ArrowIf a =>
a b c -> a b d -> a b d
`guards` forall (a :: * -> * -> *) b. ArrowList a => a b b
this
mkText :: a String XmlTree
mkText = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => String -> a
XN.mkText
{-# INLINE mkText #-}
mkBlob :: a Blob XmlTree
mkBlob = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => Blob -> a
XN.mkBlob
{-# INLINE mkBlob #-}
mkCharRef :: a Int XmlTree
mkCharRef = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => Int -> a
XN.mkCharRef
{-# INLINE mkCharRef #-}
mkEntityRef :: a String XmlTree
mkEntityRef = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => String -> a
XN.mkEntityRef
{-# INLINE mkEntityRef #-}
mkCmt :: a String XmlTree
mkCmt = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => String -> a
XN.mkCmt
{-# INLINE mkCmt #-}
mkCdata :: a String XmlTree
mkCdata = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr forall a. XmlNode a => String -> a
XN.mkCdata
{-# INLINE mkCdata #-}
mkError :: Int -> a String XmlTree
mkError Int
level = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => Int -> String -> a
XN.mkError Int
level)
mkElement :: QName -> a n XmlTree -> a n XmlTree -> a n XmlTree
mkElement QName
n a n XmlTree
af a n XmlTree
cf = (forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a n XmlTree
af forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a n XmlTree
cf)
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>>
forall (a :: * -> * -> *) b1 b2 c.
ArrowList a =>
(b1 -> b2 -> c) -> a (b1, b2) c
arr2 (\ [XmlTree]
al [XmlTree]
cl -> QName -> [XmlTree] -> [XmlTree] -> XmlTree
XN.mkElement QName
n [XmlTree]
al [XmlTree]
cl)
mkAttr :: QName -> a n XmlTree -> a n XmlTree
mkAttr QName
qn a n XmlTree
f = forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a n XmlTree
f forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (QName -> [XmlTree] -> XmlTree
XN.mkAttr QName
qn)
mkPi :: QName -> a n XmlTree -> a n XmlTree
mkPi QName
qn a n XmlTree
f = forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a n XmlTree
f forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => QName -> [XmlTree] -> a
XN.mkPi QName
qn)
mkqelem :: QName -> [a n XmlTree] -> [a n XmlTree] -> a n XmlTree
mkqelem QName
n [a n XmlTree]
afs [a n XmlTree]
cfs = forall (a :: * -> * -> *) n.
ArrowXml a =>
QName -> a n XmlTree -> a n XmlTree -> a n XmlTree
mkElement QName
n (forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
afs) (forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
cfs)
{-# INLINE mkqelem #-}
mkelem :: String -> [a n XmlTree] -> [a n XmlTree] -> a n XmlTree
mkelem String
n [a n XmlTree]
afs [a n XmlTree]
cfs = forall (a :: * -> * -> *) n.
ArrowXml a =>
QName -> a n XmlTree -> a n XmlTree -> a n XmlTree
mkElement (String -> QName
mkName String
n) (forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
afs) (forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
cfs)
{-# INLINE mkelem #-}
aelem :: String -> [a n XmlTree] -> a n XmlTree
aelem String
n [a n XmlTree]
afs = forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
afs forall (a :: * -> * -> *) b c d.
ArrowList a =>
a b c -> ([c] -> d) -> a b d
>. \ [XmlTree]
al -> QName -> [XmlTree] -> [XmlTree] -> XmlTree
XN.mkElement (String -> QName
mkName String
n) [XmlTree]
al []
{-# INLINE aelem #-}
selem :: String -> [a n XmlTree] -> a n XmlTree
selem String
n [a n XmlTree]
cfs = forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
catA [a n XmlTree]
cfs forall (a :: * -> * -> *) b c d.
ArrowList a =>
a b c -> ([c] -> d) -> a b d
>. QName -> [XmlTree] -> [XmlTree] -> XmlTree
XN.mkElement (String -> QName
mkName String
n) []
{-# INLINE selem #-}
eelem :: String -> a n XmlTree
eelem String
n = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA (QName -> [XmlTree] -> [XmlTree] -> XmlTree
XN.mkElement (String -> QName
mkName String
n) [] [])
{-# INLINE eelem #-}
root :: [a n XmlTree] -> [a n XmlTree] -> a n XmlTree
root = forall (a :: * -> * -> *) n.
ArrowXml a =>
String -> [a n XmlTree] -> [a n XmlTree] -> a n XmlTree
mkelem String
t_root
{-# INLINE root #-}
qattr :: QName -> a n XmlTree -> a n XmlTree
qattr = forall (a :: * -> * -> *) n.
ArrowXml a =>
QName -> a n XmlTree -> a n XmlTree
mkAttr
{-# INLINE qattr #-}
attr :: String -> a n XmlTree -> a n XmlTree
attr = forall (a :: * -> * -> *) n.
ArrowXml a =>
QName -> a n XmlTree -> a n XmlTree
mkAttr forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> QName
mkName
{-# INLINE attr #-}
txt :: String -> a n XmlTree
txt = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => String -> a
XN.mkText
{-# INLINE txt #-}
blb :: Blob -> a n XmlTree
blb = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => Blob -> a
XN.mkBlob
{-# INLINE blb #-}
charRef :: Int -> a n XmlTree
charRef = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => Int -> a
XN.mkCharRef
{-# INLINE charRef #-}
entityRef :: String -> a n XmlTree
entityRef = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => String -> a
XN.mkEntityRef
{-# INLINE entityRef #-}
cmt :: String -> a n XmlTree
cmt = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => String -> a
XN.mkCmt
{-# INLINE cmt #-}
warn :: String -> a n XmlTree
warn = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. XmlNode a => Int -> String -> a
XN.mkError Int
c_warn)
{-# INLINE warn #-}
err :: String -> a n XmlTree
err = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. XmlNode a => Int -> String -> a
XN.mkError Int
c_err)
{-# INLINE err #-}
fatal :: String -> a n XmlTree
fatal = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. XmlNode a => Int -> String -> a
XN.mkError Int
c_fatal)
{-# INLINE fatal #-}
spi :: String -> String -> a n XmlTree
spi String
piName String
piCont = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA (forall a. XmlNode a => QName -> [XmlTree] -> a
XN.mkPi (String -> QName
mkName String
piName) [QName -> [XmlTree] -> XmlTree
XN.mkAttr (String -> QName
mkName String
a_value) [forall a. XmlNode a => String -> a
XN.mkText String
piCont]])
{-# INLINE spi #-}
sqattr :: QName -> String -> a n XmlTree
sqattr QName
an String
av = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA (QName -> [XmlTree] -> XmlTree
XN.mkAttr QName
an [forall a. XmlNode a => String -> a
XN.mkText String
av])
{-# INLINE sqattr #-}
sattr :: String -> String -> a n XmlTree
sattr String
an String
av = forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
constA (QName -> [XmlTree] -> XmlTree
XN.mkAttr (String -> QName
mkName String
an) [forall a. XmlNode a => String -> a
XN.mkText String
av])
{-# INLINE sattr #-}
getText :: a XmlTree String
getText = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getText)
{-# INLINE getText #-}
getCharRef :: a XmlTree Int
getCharRef = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe Int
XN.getCharRef)
{-# INLINE getCharRef #-}
getEntityRef :: a XmlTree String
getEntityRef = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getEntityRef)
{-# INLINE getEntityRef #-}
getCmt :: a XmlTree String
getCmt = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getCmt)
{-# INLINE getCmt #-}
getCdata :: a XmlTree String
getCdata = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getCdata)
{-# INLINE getCdata #-}
getPiName :: a XmlTree QName
getPiName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
XN.getPiName)
{-# INLINE getPiName #-}
getPiContent :: a XmlTree XmlTree
getPiContent = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. a -> Maybe a -> a
fromMaybe [] forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe [XmlTree]
XN.getPiContent)
{-# INLINE getPiContent #-}
getElemName :: a XmlTree QName
getElemName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
XN.getElemName)
{-# INLINE getElemName #-}
getAttrl :: a XmlTree XmlTree
getAttrl = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. a -> Maybe a -> a
fromMaybe [] forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe [XmlTree]
XN.getAttrl)
{-# INLINE getAttrl #-}
getDTDPart :: a XmlTree DTDElem
getDTDPart = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
{-# INLINE getDTDPart #-}
getDTDAttrl :: a XmlTree Attributes
getDTDAttrl = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe Attributes
XN.getDTDAttrl)
{-# INLINE getDTDAttrl #-}
getAttrName :: a XmlTree QName
getAttrName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
XN.getAttrName)
{-# INLINE getAttrName #-}
getErrorLevel :: a XmlTree Int
getErrorLevel = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe Int
XN.getErrorLevel)
{-# INLINE getErrorLevel #-}
getErrorMsg :: a XmlTree String
getErrorMsg = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getErrorMsg)
{-# INLINE getErrorMsg #-}
getQName :: a XmlTree QName
getQName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
XN.getName)
{-# INLINE getQName #-}
getName :: a XmlTree String
getName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getQualifiedName)
{-# INLINE getName #-}
getUniversalName :: a XmlTree String
getUniversalName = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getUniversalName)
{-# INLINE getUniversalName #-}
getUniversalUri :: a XmlTree String
getUniversalUri = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getUniversalUri)
{-# INLINE getUniversalUri #-}
getLocalPart :: a XmlTree String
getLocalPart = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getLocalPart)
{-# INLINE getLocalPart #-}
getNamePrefix :: a XmlTree String
getNamePrefix = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getNamePrefix)
{-# INLINE getNamePrefix #-}
getNamespaceUri :: a XmlTree String
getNamespaceUri = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe String
XN.getNamespaceUri)
{-# INLINE getNamespaceUri #-}
getAttrValue :: String -> a XmlTree String
getAttrValue String
n = forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren)
getAttrValue0 :: String -> a XmlTree String
getAttrValue0 String
n = forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren
getQAttrValue :: QName -> a XmlTree String
getQAttrValue QName
n = forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
hasQName QName
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren)
getQAttrValue0 :: QName -> a XmlTree String
getQAttrValue0 QName
n = forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
hasQName QName
n forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren
changeText :: (String -> String) -> a XmlTree XmlTree
changeText String -> String
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (String -> String) -> a -> a
XN.changeText String -> String
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isText
changeBlob :: (Blob -> Blob) -> a XmlTree XmlTree
changeBlob Blob -> Blob
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (Blob -> Blob) -> a -> a
XN.changeBlob Blob -> Blob
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isBlob
changeCmt :: (String -> String) -> a XmlTree XmlTree
changeCmt String -> String
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (String -> String) -> a -> a
XN.changeCmt String -> String
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isCmt
changeQName :: (QName -> QName) -> a XmlTree XmlTree
changeQName QName -> QName
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (QName -> QName) -> a -> a
XN.changeName QName -> QName
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree QName
getQName
changeElemName :: (QName -> QName) -> a XmlTree XmlTree
changeElemName QName -> QName
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (QName -> QName) -> a -> a
XN.changeElemName QName -> QName
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isElem
changeAttrName :: (QName -> QName) -> a XmlTree XmlTree
changeAttrName QName -> QName
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (QName -> QName) -> a -> a
XN.changeAttrName QName -> QName
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isAttr
changePiName :: (QName -> QName) -> a XmlTree XmlTree
changePiName QName -> QName
cf = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (QName -> QName) -> a -> a
XN.changePiName QName -> QName
cf) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isPi
changeAttrValue :: (String -> String) -> a XmlTree XmlTree
changeAttrValue String -> String
cf = forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b) -> a (t b) (t b)
replaceChildren ( forall (a :: * -> * -> *) n.
ArrowXml a =>
a n XmlTree -> a n String
xshow forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b)
getChildren
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr String -> String
cf
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *). ArrowXml a => a String XmlTree
mkText
)
forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isAttr
changeAttrl :: (XmlTrees -> XmlTrees -> XmlTrees) -> a XmlTree XmlTree -> a XmlTree XmlTree
changeAttrl [XmlTree] -> [XmlTree] -> [XmlTree]
cf a XmlTree XmlTree
f = ( ( forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a XmlTree XmlTree
f forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& forall (a :: * -> * -> *) b. ArrowList a => a b b
this )
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>>
forall (a :: * -> * -> *) b1 b2 c.
ArrowList a =>
(b1 -> b2 -> c) -> a (b1, b2) c
arr2 forall {a}. XmlNode a => [XmlTree] -> a -> a
changeAL
)
forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when`
( forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isElem forall (a :: * -> * -> *) b c.
ArrowPlus a =>
a b c -> a b c -> a b c
<+> forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isPi )
where
changeAL :: [XmlTree] -> a -> a
changeAL [XmlTree]
as a
x = forall a. XmlNode a => ([XmlTree] -> [XmlTree]) -> a -> a
XN.changeAttrl (\ [XmlTree]
xs -> [XmlTree] -> [XmlTree] -> [XmlTree]
cf [XmlTree]
xs [XmlTree]
as) a
x
setQName :: QName -> a XmlTree XmlTree
setQName QName
n = forall (a :: * -> * -> *).
ArrowXml a =>
(QName -> QName) -> a XmlTree XmlTree
changeQName (forall a b. a -> b -> a
const QName
n)
{-# INLINE setQName #-}
setElemName :: QName -> a XmlTree XmlTree
setElemName QName
n = forall (a :: * -> * -> *).
ArrowXml a =>
(QName -> QName) -> a XmlTree XmlTree
changeElemName (forall a b. a -> b -> a
const QName
n)
{-# INLINE setElemName #-}
setAttrName :: QName -> a XmlTree XmlTree
setAttrName QName
n = forall (a :: * -> * -> *).
ArrowXml a =>
(QName -> QName) -> a XmlTree XmlTree
changeAttrName (forall a b. a -> b -> a
const QName
n)
{-# INLINE setAttrName #-}
setPiName :: QName -> a XmlTree XmlTree
setPiName QName
n = forall (a :: * -> * -> *).
ArrowXml a =>
(QName -> QName) -> a XmlTree XmlTree
changePiName (forall a b. a -> b -> a
const QName
n)
{-# INLINE setPiName #-}
setAttrl :: a XmlTree XmlTree -> a XmlTree XmlTree
setAttrl = forall (a :: * -> * -> *).
ArrowXml a =>
([XmlTree] -> [XmlTree] -> [XmlTree])
-> a XmlTree XmlTree -> a XmlTree XmlTree
changeAttrl (forall a b. a -> b -> a
const forall a. a -> a
id)
{-# INLINE setAttrl #-}
addAttrl :: a XmlTree XmlTree -> a XmlTree XmlTree
addAttrl = forall (a :: * -> * -> *).
ArrowXml a =>
([XmlTree] -> [XmlTree] -> [XmlTree])
-> a XmlTree XmlTree -> a XmlTree XmlTree
changeAttrl ([XmlTree] -> [XmlTree] -> [XmlTree]
XN.mergeAttrl)
{-# INLINE addAttrl #-}
addAttr :: String -> String -> a XmlTree XmlTree
addAttr String
an String
av = forall (a :: * -> * -> *).
ArrowXml a =>
a XmlTree XmlTree -> a XmlTree XmlTree
addAttrl (forall (a :: * -> * -> *) n.
ArrowXml a =>
String -> String -> a n XmlTree
sattr String
an String
av)
{-# INLINE addAttr #-}
removeAttr :: String -> a XmlTree XmlTree
removeAttr String
an = forall (a :: * -> * -> *).
ArrowXml a =>
a XmlTree XmlTree -> a XmlTree XmlTree
processAttrl (forall (a :: * -> * -> *) b c. ArrowList a => a b c
none forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *).
ArrowXml a =>
String -> a XmlTree XmlTree
hasName String
an)
removeQAttr :: QName -> a XmlTree XmlTree
removeQAttr QName
an = forall (a :: * -> * -> *).
ArrowXml a =>
a XmlTree XmlTree -> a XmlTree XmlTree
processAttrl (forall (a :: * -> * -> *) b c. ArrowList a => a b c
none forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
hasQName QName
an)
processAttrl :: a XmlTree XmlTree -> a XmlTree XmlTree
processAttrl a XmlTree XmlTree
f = forall (a :: * -> * -> *).
ArrowXml a =>
a XmlTree XmlTree -> a XmlTree XmlTree
setAttrl (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
getAttrl forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> a XmlTree XmlTree
f)
processTopDownWithAttrl :: a XmlTree XmlTree -> a XmlTree XmlTree
processTopDownWithAttrl a XmlTree XmlTree
f = forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b) -> a (t b) (t b)
processTopDown ( a XmlTree XmlTree
f forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> ( forall (a :: * -> * -> *).
ArrowXml a =>
a XmlTree XmlTree -> a XmlTree XmlTree
processAttrl (forall (a :: * -> * -> *) (t :: * -> *) b.
(ArrowTree a, Tree t) =>
a (t b) (t b) -> a (t b) (t b)
processTopDown a XmlTree XmlTree
f) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isElem))
(+=) :: a b XmlTree -> a b XmlTree -> a b XmlTree
a b XmlTree
tf += a b XmlTree
cf = (a b XmlTree
tf forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a b XmlTree
cf) forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b1 b2 c.
ArrowList a =>
(b1 -> b2 -> c) -> a (b1, b2) c
arr2 XmlTree -> [XmlTree] -> XmlTree
addChildren
where
addChildren :: XmlTree -> XmlTrees -> XmlTree
addChildren :: XmlTree -> [XmlTree] -> XmlTree
addChildren XmlTree
t [XmlTree]
cs
= forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl XmlTree -> XmlTree -> XmlTree
addChild XmlTree
t [XmlTree]
cs
addChild :: XmlTree -> XmlTree -> XmlTree
addChild :: XmlTree -> XmlTree -> XmlTree
addChild XmlTree
t XmlTree
c
| Bool -> Bool
not (forall a. XmlNode a => a -> Bool
XN.isElem XmlTree
t)
= XmlTree
t
| forall a. XmlNode a => a -> Bool
XN.isAttr XmlTree
c
= forall a. XmlNode a => ([XmlTree] -> [XmlTree]) -> a -> a
XN.changeAttrl (XmlTree -> [XmlTree] -> [XmlTree]
XN.addAttr XmlTree
c) XmlTree
t
| Bool
otherwise
= forall (t :: * -> *) a. Tree t => ([t a] -> [t a]) -> t a -> t a
XN.changeChildren (forall a. [a] -> [a] -> [a]
++ [XmlTree
c]) XmlTree
t
xshow :: a n XmlTree -> a n String
xshow a n XmlTree
f = a n XmlTree
f forall (a :: * -> * -> *) b c d.
ArrowList a =>
a b c -> ([c] -> d) -> a b d
>. [XmlTree] -> String
XS.xshow
{-# INLINE xshow #-}
xshowBlob :: a n XmlTree -> a n Blob
xshowBlob a n XmlTree
f = a n XmlTree
f forall (a :: * -> * -> *) b c d.
ArrowList a =>
a b c -> ([c] -> d) -> a b d
>. [XmlTree] -> Blob
XS.xshowBlob
{-# INLINE xshowBlob #-}
class (ArrowXml a) => ArrowDTD a where
isDTDDoctype :: a XmlTree XmlTree
isDTDDoctype = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
DOCTYPE ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDElement :: a XmlTree XmlTree
isDTDElement = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
ELEMENT ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDContent :: a XmlTree XmlTree
isDTDContent = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
CONTENT ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDAttlist :: a XmlTree XmlTree
isDTDAttlist = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
ATTLIST ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDEntity :: a XmlTree XmlTree
isDTDEntity = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
ENTITY ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDPEntity :: a XmlTree XmlTree
isDTDPEntity = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
PENTITY ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDNotation :: a XmlTree XmlTree
isDTDNotation = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
NOTATION) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDCondSect :: a XmlTree XmlTree
isDTDCondSect = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
CONDSECT) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDName :: a XmlTree XmlTree
isDTDName = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
NAME ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
isDTDPERef :: a XmlTree XmlTree
isDTDPERef = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
== DTDElem
PEREF ) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe DTDElem
XN.getDTDPart)
hasDTDAttr :: String -> a XmlTree XmlTree
hasDTDAttr String
n = forall (a :: * -> * -> *) b. ArrowList a => (b -> Bool) -> a b b
isA (forall a. Maybe a -> Bool
isJust forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup String
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a -> a
fromMaybe [] forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe Attributes
XN.getDTDAttrl)
getDTDAttrValue :: String -> a XmlTree String
getDTDAttrValue String
n = forall (a :: * -> * -> *) b c. ArrowList a => (b -> [c]) -> a b c
arrL (forall a. Maybe a -> [a]
maybeToList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup String
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a -> a
fromMaybe [] forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe Attributes
XN.getDTDAttrl)
setDTDAttrValue :: String -> String -> a XmlTree XmlTree
setDTDAttrValue String
n String
v = forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (forall a. XmlNode a => (Attributes -> Attributes) -> a -> a
XN.changeDTDAttrl (forall k v. Eq k => k -> v -> AssocList k v -> AssocList k v
addEntry String
n String
v)) forall (a :: * -> * -> *) b c. ArrowIf a => a b b -> a b c -> a b b
`when` forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
isDTD
mkDTDElem :: DTDElem -> Attributes -> a n XmlTree -> a n XmlTree
mkDTDElem DTDElem
e Attributes
al a n XmlTree
cf = forall (a :: * -> * -> *) b c. ArrowList a => a b c -> a b [c]
listA a n XmlTree
cf forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (DTDElem -> Attributes -> [XmlTree] -> XmlTree
XN.mkDTDElem DTDElem
e Attributes
al)
mkDTDDoctype :: Attributes -> a n XmlTree -> a n XmlTree
mkDTDDoctype = forall (a :: * -> * -> *) n.
ArrowDTD a =>
DTDElem -> Attributes -> a n XmlTree -> a n XmlTree
mkDTDElem DTDElem
DOCTYPE
mkDTDElement :: Attributes -> a n XmlTree
mkDTDElement Attributes
al = forall (a :: * -> * -> *) n.
ArrowDTD a =>
DTDElem -> Attributes -> a n XmlTree -> a n XmlTree
mkDTDElem DTDElem
ELEMENT Attributes
al forall (a :: * -> * -> *) b c. ArrowList a => a b c
none
mkDTDEntity :: Attributes -> a n XmlTree
mkDTDEntity Attributes
al = forall (a :: * -> * -> *) n.
ArrowDTD a =>
DTDElem -> Attributes -> a n XmlTree -> a n XmlTree
mkDTDElem DTDElem
ENTITY Attributes
al forall (a :: * -> * -> *) b c. ArrowList a => a b c
none
mkDTDPEntity :: Attributes -> a n XmlTree
mkDTDPEntity Attributes
al = forall (a :: * -> * -> *) n.
ArrowDTD a =>
DTDElem -> Attributes -> a n XmlTree -> a n XmlTree
mkDTDElem DTDElem
PENTITY Attributes
al forall (a :: * -> * -> *) b c. ArrowList a => a b c
none
instance ArrowXml LA
instance ArrowXml (SLA s)
instance ArrowXml IOLA
instance ArrowXml (IOSLA s)
instance ArrowDTD LA
instance ArrowDTD (SLA s)
instance ArrowDTD IOLA
instance ArrowDTD (IOSLA s)