-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Lazy wrapper to HaXML, HXT, TagSoup via custom XML tree structure
--
-- This is a wrapper to HaXML and HXT (Haskell XML Toolbox). It's my
-- work-around for the unfortunate situation that both toolboxes have
-- different functionality, none is the superset of the other. Both of
-- them rely on data structures, which look unnatural to me. Additionally
-- they provide combinator functions that are actually weakly typed, they
-- are all of type (a -> [a]), instead of being
-- differentiated into (a -> Bool), (a -> a) and
-- (a -> [a]). HXT is even weaker in type safety than HaXML
-- since it allows complete XML trees even in attribute values. I didn't
-- want to write another XML toolbox with parsers, HTML support and so
-- on, however in the meantime I came close to it.
--
-- I decided to do some wrapping in order to use as much as possible
-- functionality from HaXML and HXT. I provide my own XML tree data
-- structure with according operations. Conversions between HaXML or HXT
-- trees and my own ones are implemented. So I can use the parser and
-- pretty printer of both HaXML and HXT while processing trees the way I
-- find more natural. TagSoups can also be converted to XML trees. All
-- conversions are lazy.
--
-- I have a special XML string structure. (Text.XML.WraXML.String)
-- XML strings consist of ASCII characters and XML references. My XML
-- tree is built on top of a very general tree structure, which
-- distinguishs between leafs and inner branches.
-- (Data.Tree.BranchLeafLabel) Each element of a tree is labeled
-- with some information. Branches are then used for tags, leafs for XML
-- strings and special tags, and the labels for pointers to positions in
-- the source file. (Text.XML.WraXML.Tree)
@package wraxml
@version 0.5
module Data.Tree.BranchLeaf
data T branch leaf
Branch :: branch -> [T branch leaf] -> T branch leaf
Leaf :: leaf -> T branch leaf
map :: (branch0 -> branch1) -> (leaf0 -> leaf1) -> T branch0 leaf0 -> T branch1 leaf1
mapCond :: (branch -> Bool) -> (branch -> branch) -> (leaf -> leaf) -> T branch leaf -> T branch leaf
fold :: (branch -> [a] -> a) -> (leaf -> a) -> T branch leaf -> a
switch :: (branch -> [T branch leaf] -> a) -> (leaf -> a) -> T branch leaf -> a
allSubTrees :: T branch leaf -> [T branch leaf]
mapA :: Applicative m => (branch0 -> m branch1) -> (leaf0 -> m leaf1) -> T branch0 leaf0 -> m (T branch1 leaf1)
foldA :: Applicative m => (branch -> m ([a] -> a)) -> (leaf -> m a) -> T branch leaf -> m a
foldM :: Monad m => (branch -> [a] -> m a) -> (leaf -> m a) -> T branch leaf -> m a
instance (GHC.Show.Show branch, GHC.Show.Show leaf) => GHC.Show.Show (Data.Tree.BranchLeaf.T branch leaf)
module Data.Tree.BranchLeafLabel
type T i branch leaf = (i, Elem i branch leaf)
data Elem i branch leaf
Branch :: branch -> [T i branch leaf] -> Elem i branch leaf
Leaf :: leaf -> Elem i branch leaf
map :: (branch0 -> branch1) -> (leaf0 -> leaf1) -> T i branch0 leaf0 -> T i branch1 leaf1
mapLabel :: (i -> j) -> T i branch leaf -> T j branch leaf
mapCond :: (branch -> Bool) -> (branch -> branch) -> (leaf -> leaf) -> T i branch leaf -> T i branch leaf
-- | Process the subtrees for which the predicate holds. If the predicate
-- matches subtrees of a matching subtree, the sub-subtrees are not
-- mapped.
mapSubTrees :: (branch -> Bool) -> ((branch, [T i branch leaf]) -> (branch, [T i branch leaf])) -> T i branch leaf -> T i branch leaf
filterBranch :: (branch -> Bool) -> T i branch leaf -> [T i branch leaf]
fold :: (i -> a -> b) -> (branch -> [b] -> a) -> (leaf -> a) -> T i branch leaf -> b
switch :: (i -> a -> b) -> (branch -> [T i branch leaf] -> a) -> (leaf -> a) -> T i branch leaf -> b
foldLabel :: (i -> branch -> [b] -> b) -> (i -> leaf -> b) -> T i branch leaf -> b
foldLabelAlt :: (i -> branch -> [b] -> b) -> (i -> leaf -> b) -> T i branch leaf -> b
switchLabel :: (i -> branch -> [T i branch leaf] -> b) -> (i -> leaf -> b) -> T i branch leaf -> b
switchElem :: (branch -> [T i branch leaf] -> a) -> (leaf -> a) -> Elem i branch leaf -> a
allSubTrees :: T i branch leaf -> [T i branch leaf]
mapA :: Applicative m => (branch0 -> m branch1) -> (leaf0 -> m leaf1) -> T i branch0 leaf0 -> m (T i branch1 leaf1)
mapCondA :: Applicative m => (branch -> Bool) -> (branch -> m branch) -> (leaf -> m leaf) -> T i branch leaf -> m (T i branch leaf)
foldA :: Applicative m => (i -> m (a -> b)) -> (branch -> m ([b] -> a)) -> (leaf -> m a) -> T i branch leaf -> m b
foldM :: Monad m => (i -> a -> m b) -> (branch -> [b] -> m a) -> (leaf -> m a) -> T i branch leaf -> m b
instance (GHC.Show.Show branch, GHC.Show.Show i, GHC.Show.Show leaf) => GHC.Show.Show (Data.Tree.BranchLeafLabel.Elem i branch leaf)
module Text.HTML.WraXML.Entity
type Name = String
mapNameToChar :: Map Name Char
mapCharToName :: Map Char Name
module Text.XML.WraXML.Element
data T name str
Cons :: Name name -> [T name str] -> T name str
[name_] :: T name str -> Name name
[attributes_] :: T name str -> [T name str]
type Filter name str = T name str -> T name str
cons :: (Tag name, Attribute name) => Name name -> [T name str] -> T name str
name :: T (T name str) (Name name)
attributes :: T (T name str) [T name str]
checkName :: (Name name -> Bool) -> T name str -> Bool
checkAttributes :: ([T name str] -> Bool) -> T name str -> Bool
lift :: (Name name -> [T name str] -> (Name name, [T name str])) -> Filter name str
-- | process the attribute list of a specific tag
processAttrs :: (Tag name, Attribute name) => (Name name -> Bool) -> ([T name str] -> [T name str]) -> Filter name str
processAttrValue :: (Tag name, Attribute name) => (Name name, Name name) -> (str -> str) -> Filter name str
processAttrValueCond :: (Tag name, Attribute name) => (Name name, Name name) -> ([T name str] -> Bool) -> (str -> str) -> Filter name str
-- | process the attribute list of a specific tag
processAttrsA :: (Tag name, Attribute name, Applicative m) => (Name name -> Bool) -> ([T name str] -> m [T name str]) -> T name str -> m (T name str)
processAttrValueA :: (Tag name, Attribute name, Applicative m) => (Name name, Name name) -> (str -> m str) -> T name str -> m (T name str)
processAttrValueCondA :: (Tag name, Attribute name, Applicative m) => (Name name, Name name) -> ([T name str] -> Bool) -> (str -> m str) -> T name str -> m (T name str)
liftA :: (Tag name, Attribute name, Applicative m) => (Name name -> [T name str] -> m (Name name, [T name str])) -> T name str -> m (T name str)
format :: (Tag name, Attribute name, C string) => (Name name -> Bool) -> ShowS -> T name string -> [ShowS] -> ShowS
instance (Text.XML.Basic.Name.Attribute name, GHC.Show.Show name, GHC.Show.Show str) => GHC.Show.Show (Text.XML.WraXML.Element.T name str)
instance GHC.Base.Functor (Text.XML.WraXML.Element.T name)
instance Data.Foldable.Foldable (Text.XML.WraXML.Element.T name)
instance Data.Traversable.Traversable (Text.XML.WraXML.Element.T name)
-- | Conversion from HaXml position to our Position type. We cannot convert
-- back efficiently, since we would have to increment the line number
-- repeatedly. Thus such a conversion is missing.
module Text.XML.WraXML.Position.HaXml
toPosition :: Posn -> T
module Text.XML.WraXML.String
type T = [Atom]
type EmbeddedExceptions = [Exceptional String Char]
type Atom = T
-- | should be an abstract type
type Encoding = String
-- | should be [Word8]
type Encoded = String
-- | Literal translation from pure strings. This can only work, if the
-- string does not contain special characters.
fromString :: String -> T
diffFromString :: String -> T -> T
-- | default routine
fromUnicodeString :: String -> T
toUnicodeStringOrFormat :: T -> String
toUnicodeStringEmbedMessage :: T -> String
-- | Errors in on resolution of references yield undefined elements.
toUnicodeString :: T -> String
toUnicodeStringEmbedException :: T -> EmbeddedExceptions
-- | Interpret the XML string as mixture of ISO-Latin-1 characters and XML
-- entities and convert that to a Unicode string.
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
isoLatin1ToUnicodeString :: T -> String
-- | Interpret the XML string as mixture of UTF-8 characters and XML
-- entities and convert that to a Unicode string.
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
utf8ToUnicodeString :: T -> String
readHex :: (Eq a, Num a) => String -> a
-- | Caution: There is a memory leak for the case that entity references
-- are huge.
parse :: String -> T
parseAux :: (Char -> Bool) -> (String -> T) -> String -> String -> T
reduceRefs :: T -> T
-- | Consider the XmlString as a mixture of XML entities and UTF-8
-- characters. Replace UTF-8 characters by Unicode representations.
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
replaceUTF8ByUnicode :: T -> T
mapUnicodeRuns :: (String -> String) -> T -> T
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
uStringWithErrorsMergePlainChars :: EmbeddedExceptions -> [Exceptional String String]
evalDecodeAdaptive :: State (Encoded -> String) a -> a
liftFromUnicode :: (String -> String) -> T -> T
liftFromUnicodeA :: Applicative m => (String -> m String) -> T -> m T
module Text.XML.WraXML.String.HaXml
toXmlString :: AttValue -> T
fromXmlString :: T -> AttValue
lift :: (T -> T) -> AttValue -> AttValue
refToXmlAtom :: Reference -> Atom
charFromXmlAtom' :: T -> Either Char Reference
charFromXmlAtom :: T -> Either Char Reference
module Text.XML.WraXML.String.HXT
toXmlString :: XmlTrees -> T
toXmlString' :: XmlTree -> T
fromXmlString :: T -> XmlTrees
module Text.HTML.WraXML.Element
decodeAdaptive :: (Attribute name, Tag name) => (Encoding -> Encoded -> String) -> T name [T] -> State (Encoded -> String) (T name String)
data T name str
name_ :: T name str -> Name name
attributes_ :: T name str -> [T name str]
cons :: (Tag name, Attribute name) => Name name -> [T name str] -> T name str
name :: T (T name str) (Name name)
attributes :: T (T name str) [T name str]
checkName :: (Name name -> Bool) -> T name str -> Bool
format :: (Tag name, Attribute name, C string) => (Name name -> Bool) -> ShowS -> T name string -> [ShowS] -> ShowS
module Text.HTML.WraXML.String
type T = [Atom]
type Atom = T
-- | Literal translation from pure strings. This can only work, if the
-- string does not contain special characters.
fromString :: String -> T
-- | default routine
fromUnicodeString :: String -> T
fromUnicodeStringInternetExploder :: String -> T
toUnicodeStringOrFormat :: T -> String
toUnicodeString :: T -> String
-- | Decode plain characters using the given decoder, and decode entities
-- by HXT's XML entity table. Decoding errors for both conversions are
-- embedded where they occur.
toUnicodeStringDecodingEmbedError :: DecodingFctEmbedErrors -> T -> EmbeddedExceptions
-- | Convert characters to lower case. This uses ISO latin encoding and may
-- fail for exotic characters.
toLower :: T -> T
toUpper :: T -> T
toCanonicalUnicodeString :: T -> String
equalIgnoreCase :: T -> T -> Bool
elemIgnoreCase :: T -> [T] -> Bool
module Text.XML.WraXML.Tree
newtype T i name str
Cons :: T i (Branch name str) (Leaf name str) -> T i name str
[unwrap] :: T i name str -> T i (Branch name str) (Leaf name str)
data Branch name str
Tag :: T name str -> Branch name str
[getElement] :: Branch name str -> T name str
data Leaf name str
Text :: Bool -> str -> Leaf name str
Comment :: String -> Leaf name str
CData :: String -> Leaf name str
PI :: Name name -> T name str -> Leaf name str
Warning :: String -> Leaf name str
-- | Deprecated: use Attribute type from xml-basic package instead
type AttributePlain = (String, String)
wrap :: T i (Branch name str) (Leaf name str) -> T i name str
wrap2 :: i -> Elem i (Branch name str) (Leaf name str) -> T i name str
lift :: (T i (Branch name str0) (Leaf name str0) -> T j (Branch name str1) (Leaf name str1)) -> T i name str0 -> T j name str1
liftA :: Applicative m => (T i (Branch name str0) (Leaf name str0) -> m (T i (Branch name str1) (Leaf name str1))) -> T i name str0 -> m (T i name str1)
-- | Build some textual content.
literal :: str -> T i name str
literalIndex :: i -> str -> T i name str
comment :: String -> T i name str
commentIndex :: i -> String -> T i name str
warning :: String -> T i name str
warningIndex :: i -> String -> T i name str
cdata :: String -> T i name str
cdataIndex :: i -> String -> T i name str
processing :: Name name -> T name str -> T i name str
processingIndex :: i -> Name name -> T name str -> T i name str
tag :: Name name -> [T i name str] -> T i name str
tagAttr :: Name name -> [T name str] -> [T i name str] -> T i name str
tagIndexAttr :: i -> Name name -> [T name str] -> [T i name str] -> T i name str
liftTrans :: (a -> b) -> a -> [b]
liftText :: (String -> String) -> Leaf name String -> Leaf name String
liftTextA :: Applicative m => (String -> m String) -> Leaf name String -> m (Leaf name String)
liftElement :: (T name str0 -> T name str1) -> Branch name str0 -> Branch name str1
liftElementA :: Applicative m => (T name str0 -> m (T name str1)) -> Branch name str0 -> m (Branch name str1)
-- | If the Tree is a Leaf, then return False. Otherwise return the result
-- of the predicate.
checkTag :: (T name str -> Bool) -> T i name str -> Bool
maybeTag :: T i name str -> Maybe (T name str, [T i name str])
maybeText :: T i name str -> Maybe str
maybeTextLeaf :: Leaf name str -> Maybe str
maybeCommentLeaf :: Leaf name str -> Maybe String
maybeCDataLeaf :: Leaf name str -> Maybe String
maybeProcessingLeaf :: Leaf name str -> Maybe (Name name, T name str)
maybeWarningLeaf :: Leaf name str -> Maybe String
fold :: (i -> a -> b) -> (T name str -> [b] -> a) -> (Leaf name str -> a) -> T i name str -> b
switch :: (i -> a -> b) -> (T name str -> [T i name str] -> a) -> (Leaf name str -> a) -> T i name str -> b
type Filter i name str = T i name str -> T i name str
type FilterA m i name str = T i name str -> m (T i name str)
mapText :: (String -> String) -> T i name String -> T i name String
mapIndex :: (i -> j) -> T i name str -> T j name str
mapTag :: Filter name str -> Filter i name str
-- | Convert all CData sections to plain text.
textFromCData :: T i name String -> T i name String
-- | You can e.g. filter text1 b text2 /b text3 to
-- text1 text2 text3 by filterTag (checkTagName
-- ("b"/=)).
filterTag :: (T name str -> Bool) -> T i name str -> [T i name str]
mapCond :: (T name str -> Bool) -> Filter name str -> (Leaf name str -> Leaf name str) -> Filter i name str
-- | Find all branches where the predicate applies and return a list of
-- matching sub-trees in depth-first order.
--
-- Example: filterTagsFlatten (checkTagName ("meta"==))
filterTagsFlatten :: (T name str -> Bool) -> T i name str -> [(T name str, [T i name str])]
filterElementsFlatten :: (T name str -> Bool) -> T i name str -> [T name str]
allSubTrees :: T i name str -> [T i name str]
-- | merge subsequent string leafs
mergeStrings :: Monoid str => Filter i name str
mergeTopStrings :: Monoid str => [T i name str] -> [T i name str]
-- | Process all sub-tree lists in bottom-up order.
processAllSubTrees :: ([T i name str] -> [T i name str]) -> Filter i name str
processSubTrees :: (Name name -> Bool) -> ([T i name str] -> [T i name str]) -> Filter i name str
processSubTreesAttrs :: (Name name -> Bool) -> (([T name str], [T i name str]) -> ([T name str], [T i name str])) -> Filter i name str
mapTextA :: Applicative m => (String -> m String) -> FilterA m i name String
mapCondA :: Applicative m => (T name str -> Bool) -> (T name str -> m (T name str)) -> (Leaf name str -> m (Leaf name str)) -> FilterA m i name str
unescape :: T i name T -> T i name String
-- | Use ASCII characters, XML entity references and character references
-- for representing strings. That's not human readable, but portable.
escape :: T i name String -> T i name T
-- | Decode characters like those from UTF-8 scheme.
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
decodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> [T i name String]
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
maybeDecodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> Maybe [T i name String]
-- | Conversion errors are appended as warnings to the tree.
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
decodeSpecialCharsDecoder :: (Tag name, Attribute name) => DecodingFctEmbedErrors -> T i name T -> [T i name String]
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
decodeAttrs :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> [T name T] -> Writer [String] [T name String]
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
decodeAttr :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> Name name -> T -> Writer [String] String
-- | Deprecated: XmlChar.Unicode constructors must contain unicode
-- characters and not encoded ones. Decode characters before parsing!
maybeDecodeUTF8Chars :: String -> T i name T -> Maybe (T i name String)
formatMany :: (Tag name, Attribute name, C string) => [T i name string] -> ShowS
format :: (Tag name, Attribute name, C string) => T i name string -> ShowS
formatBranch :: (Tag name, Attribute name, C string) => Branch name string -> [ShowS] -> ShowS
formatLeaf :: (Tag name, Attribute name, C string) => Leaf name string -> ShowS
instance (Text.XML.Basic.Name.Attribute name, GHC.Show.Show name, GHC.Show.Show str) => GHC.Show.Show (Text.XML.WraXML.Tree.Branch name str)
instance (Text.XML.Basic.Name.Attribute name, GHC.Show.Show i, GHC.Show.Show name, GHC.Show.Show str) => GHC.Show.Show (Text.XML.WraXML.Tree.T i name str)
instance GHC.Base.Functor (Text.XML.WraXML.Tree.T i name)
instance Data.Foldable.Foldable (Text.XML.WraXML.Tree.T i name)
instance Data.Traversable.Traversable (Text.XML.WraXML.Tree.T i name)
instance (Text.XML.Basic.Name.Tag name, Text.XML.Basic.Name.Attribute name, Text.XML.Basic.Format.C string) => Text.XML.Basic.Format.C (Text.XML.WraXML.Tree.T i name string)
instance (Text.XML.Basic.Name.Attribute name, GHC.Show.Show name, GHC.Show.Show str) => GHC.Show.Show (Text.XML.WraXML.Tree.Leaf name str)
instance GHC.Base.Functor (Text.XML.WraXML.Tree.Leaf name)
instance Data.Foldable.Foldable (Text.XML.WraXML.Tree.Leaf name)
instance Data.Traversable.Traversable (Text.XML.WraXML.Tree.Leaf name)
instance (Text.XML.Basic.Name.Tag name, Text.XML.Basic.Name.Attribute name, Text.XML.Basic.Format.C string) => Text.XML.Basic.Format.C (Text.XML.WraXML.Tree.Leaf name string)
-- | Very lazy HTML tree parser using TagSoup as lexer.
module Text.XML.WraXML.Tree.Tagchup
-- | A TagSoup could represent multiple HTML trees, e.g. with some
-- introducing comments.
toXmlTrees :: (Tag name, Attribute name) => [T name string] -> [T T name string]
fromXmlTree :: (Tag name, Attribute name) => T T name string -> [T name string]
fromElement :: (Tag name, Attribute name) => T name string -> T name string
fromLeaf :: (Tag name, Attribute name) => Leaf name string -> T name string
liftElementFilter :: (Tag name, Attribute name) => (T name str -> T name str) -> T name str -> T name str
liftElementCheck :: (T name string -> Bool) -> T name string -> Bool
example :: [XmlTree T String]
-- | This module allows construction of XML trees using String literals
-- instead of names.
module Text.XML.WraXML.Tree.Literal
data T i name str
processing :: (Tag name, Attribute name) => String -> T name str -> T i name str
processingIndex :: (Tag name, Attribute name) => i -> String -> T name str -> T i name str
tag :: (Tag name, Attribute name) => String -> [T i name str] -> T i name str
tagAttr :: (Tag name, Attribute name) => String -> [(String, str)] -> [T i name str] -> T i name str
tagIndexAttr :: (Tag name, Attribute name) => i -> String -> [(String, str)] -> [T i name str] -> T i name str
-- | Build some textual content.
literal :: str -> T i name str
literalIndex :: i -> str -> T i name str
comment :: String -> T i name str
commentIndex :: i -> String -> T i name str
warning :: String -> T i name str
warningIndex :: i -> String -> T i name str
cdata :: String -> T i name str
cdataIndex :: i -> String -> T i name str
-- | Very lazy HTML tree parser using TagSoup as lexer.
module Text.XML.WraXML.Tree.TagSoup
type PosTag = (T, Tag String)
defaultFilename :: String
attachPos :: [Tag String] -> [PosTag]
removeMetaPos :: [PosTag] -> [PosTag]
type XmlTree name string = T T name string
-- | A TagSoup could represent multiple HTML trees, e.g. with some
-- introducing comments.
toXmlTreesString :: (Tag name, Attribute name) => [Tag String] -> [XmlTree name String]
toXmlTreesAux :: (Tag name, Attribute name) => [PosTag] -> [XmlTree name String]
type Parser i a = Parser (i, Tag String) a
parseBranch :: (Tag name, Attribute name) => Parser i (T i name String)
parseSubTrees :: (Tag name, Attribute name) => T i name String -> Name name -> Parser i [T i name String]
parseTerminator :: (Tag name, Attribute name) => Name name -> Parser i [T i name String]
parseOptions :: ParseOptions String
example :: [XmlTree T String]
module Text.XML.WraXML.Tree.HaXml
fromXmlTree :: (Tag name, Attribute name) => T i name T -> Content i
multiFromXmlTree :: (Tag name, Attribute name) => T i name T -> [Content i]
toXmlTree :: (Tag name, Attribute name) => Content i -> T i name T
toXmlTree' :: (Tag name, Attribute name) => Content i -> T i name T
lift :: (Tag name, Attribute name) => Filter i name T -> Content i -> Content i
-- | Lift a filter of HaXml trees to a processor of a HaXml document.
--
-- cf. onContent
onContent :: FilePath -> (Content Posn -> Content Posn) -> Document Posn -> Document Posn
liftFilterToDocument :: (Tag name, Attribute name) => FilePath -> Filter Posn name T -> Document Posn -> Document Posn
processWith :: (Tag name, Attribute name) => Filter Posn name T -> IO ()
module Text.XML.WraXML.Tree.HXT
fromXmlTree :: (Tag name, Attribute name) => T i name T -> XmlTree
toXmlTree :: (Tag name, Attribute name) => XmlTree -> T () name T
lift :: (Tag name, Attribute name) => Filter () name T -> XmlTree -> XmlTree
-- | Lift our XML filters to HXT document processors.
liftFilterToDocument :: (Tag name, Attribute name) => String -> Filter () name T -> XmlTree -> XmlTree
checkTagName :: String -> XNode -> Bool
module Text.XML.WraXML.Document
data T i name str
Cons :: Maybe [T name str] -> Maybe String -> [T i name str] -> T i name str
[xmlDeclaration] :: T i name str -> Maybe [T name str]
[docType] :: T i name str -> Maybe String
[content] :: T i name str -> [T i name str]
lift :: (Tag name, Attribute name) => (str0 -> str1) -> ([T i name str0] -> [T i name str1]) -> T i name str0 -> T i name str1
liftA :: (Tag name, Attribute name, Applicative m) => (str0 -> m str1) -> ([T i name str0] -> m [T i name str1]) -> T i name str0 -> m (T i name str1)
formatXMLDeclaration :: (Tag name, Attribute name, C string) => [T name string] -> ShowS
formatDocType :: String -> ShowS
format :: (Tag name, Attribute name, C string) => T i name string -> ShowS
instance (Text.XML.Basic.Name.Attribute name, GHC.Show.Show str, GHC.Show.Show i, GHC.Show.Show name) => GHC.Show.Show (Text.XML.WraXML.Document.T i name str)
instance (Text.XML.Basic.Name.Tag name, Text.XML.Basic.Name.Attribute name) => GHC.Base.Functor (Text.XML.WraXML.Document.T i name)
instance (Text.XML.Basic.Name.Tag name, Text.XML.Basic.Name.Attribute name, Text.XML.Basic.Format.C string) => Text.XML.Basic.Format.C (Text.XML.WraXML.Document.T i name string)
module Text.XML.WraXML.Document.Tagchup
type XmlDoc = T T
class CharType char => CharSpace char
isSpace :: CharSpace char => char -> Bool
class StringSpace string
isAllSpace :: StringSpace string => string -> Bool
dropSpace :: StringSpace string => [T name string] -> [T name string]
withoutLeadingSpace :: StringSpace string => ([T name string] -> (a, [T name string])) -> State [T name string] a
toXmlDocument :: (Tag name, Attribute name, StringSpace string) => [T name string] -> XmlDoc name string
example :: IO ()
instance Text.XML.WraXML.Document.Tagchup.CharSpace char => Text.XML.WraXML.Document.Tagchup.StringSpace [char]
instance Text.XML.WraXML.Document.Tagchup.CharSpace GHC.Types.Char
instance Text.XML.WraXML.Document.Tagchup.CharSpace Text.XML.Basic.Character.T
module Text.XML.WraXML.Document.TagSoup
dropSpace :: [PosTag] -> [PosTag]
withoutLeadingSpace :: ([PosTag] -> (a, [PosTag])) -> State [PosTag] a
toXmlDocument :: (Tag name, Attribute name) => [Tag String] -> T T name String
toXmlDocumentString :: (Tag name, Attribute name) => [Tag String] -> T T name String
example :: IO ()
module Text.HTML.WraXML.Tree
findMetaEncoding :: (Tag name, Attribute name) => T i name String -> Maybe String
-- | Extract META tags which contain HTTP-EQUIV attribute and present these
-- values like HTTP headers.
getMetaHTTPHeaders :: (Tag name, Attribute name) => T i name String -> [(String, String)]
-- | Decode strings in a HTML tree. Switch decoding on every occurence of a
-- content-type meta-tag. This must operate on HtmlStrings, that
-- is before reference resolution, since after reference resolution
-- Unicode characters may clash with encoded characters.
decodeAdaptive :: (Attribute name, Tag name) => (Encoding -> Encoded -> String) -> T i name [T] -> State (Encoded -> String) (T i name String)
decodeLeafAdaptive :: (Attribute name, Tag name) => (Encoding -> Encoded -> String) -> Leaf name [T] -> State (Encoded -> String) (Leaf name String)
-- | Convert special characters of XmlString into Unicode according to the
-- encoding given in a META HTTP-EQUIV tag.
-- | Deprecated: This calls findMetaEncoding which is a potential space
-- leak. Better use decodeAdaptive.
decodeSpecialCharsMetaEncoding :: (Tag name, Attribute name) => T i name T -> [T i name String]
formatMany :: (Tag name, Attribute name, C string) => [T i name string] -> ShowS
format :: (Tag name, Attribute name, C string) => T i name string -> ShowS
formatBranch :: (Tag name, Attribute name, C string) => Branch name string -> [ShowS] -> ShowS
formatManyXHTML :: (Tag name, Attribute name, C string) => [T i name string] -> ShowS
formatXHTML :: (Tag name, Attribute name, C string) => T i name string -> ShowS
formatBranchXHTML :: (Tag name, Attribute name, C string) => Branch name string -> [ShowS] -> ShowS
-- | not xhtml: show br xhtml: show
-- br/ Unfortunately we cannot generally merge
-- tag/tag to tag/ since browsers
-- expect e.g. separated div/div.
formatBranchGen :: (Tag name, Attribute name, C string) => Bool -> Branch name string -> [ShowS] -> ShowS
module Text.HTML.WraXML.Tree.HXT
-- | Tidy a piece of HTML code. & -> & - <
-- unquoted tag attribute values: size=-1 -> size="-1" insert omitted
-- closing tags
tidy :: String -> IO String
-- | Like xshow but it shows empty tags the HTML way. E.g. it emits
-- br instead of br/,
-- noscript/noscript instead of
-- noscript/. Many browsers prefer that.
format :: XmlTree -> String
fromHTMLString :: String -> IO XmlTree
-- | Guess the encoding from the META-HTTP-EQUIV attribute, if available.
-- Otherwise fall back to ISO-Latin-1.
fromHTMLStringMetaEncoding :: String -> IO XmlTree
-- | Warning: error collection does not work currently
errorAnnFromHTMLStringMetaEncoding :: String -> IO (XmlTree, [ErrorMsg], Maybe Int)
-- | In earlier version I managed to obtain the error messages. This does
-- not work anymore and do not know how to achieve this.
-- | Warning: error collection does not work currently
errorAnnFromHTMLStringOpt :: SysConfigList -> String -> IO (XmlTree, [ErrorMsg], Maybe Int)
type ErrorMsg = (Int, String)
getMetaHTTPHeaders :: String -> IO [(String, String)]
module Text.HTML.WraXML.Document
data T i name str
Cons :: Maybe [T name str] -> Maybe String -> [T i name str] -> T i name str
[xmlDeclaration] :: T i name str -> Maybe [T name str]
[docType] :: T i name str -> Maybe String
[content] :: T i name str -> [T i name str]
lift :: (Tag name, Attribute name) => (str0 -> str1) -> ([T i name str0] -> [T i name str1]) -> T i name str0 -> T i name str1
decodeAdaptive :: (Attribute name, Tag name) => (Encoding -> Encoded -> String) -> T i name [T] -> State (Encoded -> String) (T i name String)
format :: (Tag name, Attribute name, C string) => T i name string -> ShowS
module Text.HTML.WraXML.Table
type T i name str = [[[T i name str]]]
-- | Ignores all non-table-row-tags and all non-table-cell-tags.
simpleFromRows :: Tag name => [T i name str] -> T i name str
simpleFromRow :: Tag name => [T i name str] -> [[T i name str]]