module Text.XML.HXT.Arrow.ParserInterface
( module Text.XML.HXT.Arrow.ParserInterface )
where
import Control.Arrow
import Control.Arrow.ArrowList
import Control.Arrow.ArrowIf
import Control.Arrow.ArrowTree
import Control.Arrow.ListArrow
import Text.XML.HXT.Parser.XmlEntities ( xmlEntities )
import Text.XML.HXT.Parser.XhtmlEntities( xhtmlEntities )
import Text.XML.HXT.DOM.Interface
import Text.XML.HXT.Arrow.XmlArrow
import qualified Text.XML.HXT.Parser.TagSoup as TS
import qualified Text.XML.HXT.Parser.HtmlParsec as HP
import qualified Text.XML.HXT.Parser.XmlParsec as XP
import qualified Text.XML.HXT.Parser.XmlDTDParser as DP
import qualified Text.XML.HXT.DTDValidation.Validation as VA
parseXmlDoc :: ArrowXml a => a (String, String) XmlTree
parseXmlDoc = arr2L XP.parseXmlDocument
parseXmlDTDPart :: ArrowXml a => a (String, XmlTree) XmlTree
parseXmlDTDPart = arr2L XP.parseXmlDTDPart
parseXmlContent :: ArrowXml a => a String XmlTree
parseXmlContent = arrL XP.xread
parseXmlEntityEncodingSpec
, parseXmlDocEncodingSpec
, removeEncodingSpec :: ArrowXml a => a XmlTree XmlTree
parseXmlDocEncodingSpec = arrL XP.parseXmlDocEncodingSpec
parseXmlEntityEncodingSpec = arrL XP.parseXmlEntityEncodingSpec
removeEncodingSpec = arrL XP.removeEncodingSpec
parseXmlDTDdeclPart :: ArrowXml a => a XmlTree XmlTree
parseXmlDTDdeclPart = arrL DP.parseXmlDTDdeclPart
parseXmlDTDdecl :: ArrowXml a => a XmlTree XmlTree
parseXmlDTDdecl = arrL DP.parseXmlDTDdecl
parseXmlDTDEntityValue :: ArrowXml a => a XmlTree XmlTree
parseXmlDTDEntityValue = arrL DP.parseXmlDTDEntityValue
parseXmlAttrValue :: ArrowXml a => String -> a XmlTree XmlTree
parseXmlAttrValue context = arrL (XP.parseXmlAttrValue context)
parseXmlGeneralEntityValue :: ArrowXml a => String -> a XmlTree XmlTree
parseXmlGeneralEntityValue context
= arrL (XP.parseXmlGeneralEntityValue context)
parseHtmlDoc :: ArrowList a => a (String, String) XmlTree
parseHtmlDoc = arr2L HP.parseHtmlDocument
parseHtmlContent :: ArrowList a => a String XmlTree
parseHtmlContent = arrL HP.parseHtmlContent
parseHtmlTagSoup :: ArrowList a => Bool -> Bool -> Bool -> Bool -> Bool -> a (String, String) XmlTree
parseHtmlTagSoup withNamespaces withWarnings preserveCmt removeWS asHtml
= arr2L (TS.parseHtmlTagSoup withNamespaces withWarnings preserveCmt removeWS asHtml)
validateDoc :: ArrowList a => a XmlTree XmlTree
validateDoc = fromLA ( VA.validate
`when`
VA.getDTDSubset
)
transformDoc :: ArrowList a => a XmlTree XmlTree
transformDoc = fromLA VA.transform
substHtmlEntityRefs :: ArrowList a => a XmlTree XmlTree
substHtmlEntityRefs = substEntityRefs xhtmlEntities
substXmlEntityRefs :: ArrowList a => a XmlTree XmlTree
substXmlEntityRefs = substEntityRefs xmlEntities
substEntityRefs :: ArrowList a => [(String, Int)] -> a XmlTree XmlTree
substEntityRefs entities
= fromLA substEntities
where
substEntities :: LA XmlTree XmlTree
substEntities
= choiceA
[ isEntityRef :-> ( substEntity $< getEntityRef )
, isElem :-> ( processAttrl (processChildren substEntities)
>>>
processChildren substEntities
)
, this :-> this
]
where
substEntity en
= case (lookup en entities) of
Just i
-> txt [toEnum i]
Nothing
-> this