wraxml-0.4.3: Lazy wrapper to HaXML, HXT, TagSoup via custom XML tree structureSource codeContentsIndex
Text.XML.WraXML.Tree
Contents
data structures
generators
Conversions
Tests
types of processors
tree processors
applicative functor tree processors
Character decoding
Formatting
Synopsis
newtype T i name str = Cons {
unwrap :: T i (Branch name str) (Leaf name str)
}
data Branch name str = Tag {
getElement :: T name str
}
data Leaf name str
= Text Bool str
| Comment String
| CData String
| PI (Name name) (T name str)
| Warning String
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)
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)
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
textFromCData :: T i name String -> T i name String
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
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]
mergeStrings :: Monoid str => Filter i name str
mergeTopStrings :: Monoid str => [T i name str] -> [T i name str]
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
escape :: T i name String -> T i name T
decodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> [T i name String]
maybeDecodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> Maybe [T i name String]
decodeSpecialCharsDecoder :: (Tag name, Attribute name) => DecodingFctEmbedErrors -> T i name T -> [T i name String]
decodeAttrs :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> [T name T] -> Writer [String] [T name String]
decodeAttr :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> Name name -> T -> Writer [String] String
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
data structures
newtype T i name str Source
Constructors
Cons
unwrap :: T i (Branch name str) (Leaf name str)
show/hide Instances
Functor (T i name)
Foldable (T i name)
Traversable (T i name)
(Show i, Show name, Show str, Attribute name) => Show (T i name str)
(Tag name, Attribute name, C string) => C (T i name string)
data Branch name str Source
Constructors
Tag
getElement :: T name str
show/hide Instances
(Show name, Show str, Attribute name) => Show (Branch name str)
data Leaf name str Source
Constructors
Text Bool str
Comment String
CData String
PI (Name name) (T name str)
Warning String
show/hide Instances
Functor (Leaf name)
Foldable (Leaf name)
Traversable (Leaf name)
(Attribute name, Show name, Show str) => Show (Leaf name str)
(Tag name, Attribute name, C string) => C (Leaf name string)
type AttributePlain = (String, String)Source
generators
wrap :: T i (Branch name str) (Leaf name str) -> T i name strSource
wrap2 :: i -> Elem i (Branch name str) (Leaf name str) -> T i name strSource
lift :: (T i (Branch name str0) (Leaf name str0) -> T j (Branch name str1) (Leaf name str1)) -> T i name str0 -> T j name str1Source
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)Source
literal :: str -> T i name strSource
Build some textual content.
literalIndex :: i -> str -> T i name strSource
comment :: String -> T i name strSource
commentIndex :: i -> String -> T i name strSource
warning :: String -> T i name strSource
warningIndex :: i -> String -> T i name strSource
cdata :: String -> T i name strSource
cdataIndex :: i -> String -> T i name strSource
processing :: Name name -> T name str -> T i name strSource
processingIndex :: i -> Name name -> T name str -> T i name strSource
tag :: Name name -> [T i name str] -> T i name strSource
tagAttr :: Name name -> [T name str] -> [T i name str] -> T i name strSource
tagIndexAttr :: i -> Name name -> [T name str] -> [T i name str] -> T i name strSource
Conversions
liftTrans :: (a -> b) -> a -> [b]Source
liftText :: (String -> String) -> Leaf name String -> Leaf name StringSource
liftTextA :: Applicative m => (String -> m String) -> Leaf name String -> m (Leaf name String)Source
liftElement :: (T name str0 -> T name str1) -> Branch name str0 -> Branch name str1Source
liftElementA :: Applicative m => (T name str0 -> m (T name str1)) -> Branch name str0 -> m (Branch name str1)Source
Tests
checkTag :: (T name str -> Bool) -> T i name str -> BoolSource
If the Tree is a Leaf, then return False. Otherwise return the result of the predicate.
maybeTag :: T i name str -> Maybe (T name str, [T i name str])Source
maybeText :: T i name str -> Maybe strSource
maybeTextLeaf :: Leaf name str -> Maybe strSource
maybeCommentLeaf :: Leaf name str -> Maybe StringSource
maybeCDataLeaf :: Leaf name str -> Maybe StringSource
maybeProcessingLeaf :: Leaf name str -> Maybe (Name name, T name str)Source
maybeWarningLeaf :: Leaf name str -> Maybe StringSource
fold :: (i -> a -> b) -> (T name str -> [b] -> a) -> (Leaf name str -> a) -> T i name str -> bSource
switch :: (i -> a -> b) -> (T name str -> [T i name str] -> a) -> (Leaf name str -> a) -> T i name str -> bSource
types of processors
type Filter i name str = T i name str -> T i name strSource
type FilterA m i name str = T i name str -> m (T i name str)Source
tree processors
mapText :: (String -> String) -> T i name String -> T i name StringSource
mapIndex :: (i -> j) -> T i name str -> T j name strSource
mapTag :: Filter name str -> Filter i name strSource
textFromCData :: T i name String -> T i name StringSource
Convert all CData sections to plain text.
filterTag :: (T name str -> Bool) -> T i name str -> [T i name str]Source
You can e.g. filter text1 b> text2 </b text3 to text1 text2 text3 by filterTag (checkTagName (b/=)).
mapCond :: (T name str -> Bool) -> Filter name str -> (Leaf name str -> Leaf name str) -> Filter i name strSource
filterTagsFlatten :: (T name str -> Bool) -> T i name str -> [(T name str, [T i name str])]Source

Find all branches where the predicate applies and return a list of matching sub-trees in depth-first order.

Example: filterTagsFlatten (checkTagName (meta==))

filterElementsFlatten :: (T name str -> Bool) -> T i name str -> [T name str]Source
allSubTrees :: T i name str -> [T i name str]Source
mergeStrings :: Monoid str => Filter i name strSource
merge subsequent string leafs
mergeTopStrings :: Monoid str => [T i name str] -> [T i name str]Source
processAllSubTrees :: ([T i name str] -> [T i name str]) -> Filter i name strSource
Process all sub-tree lists in bottom-up order.
processSubTrees :: (Name name -> Bool) -> ([T i name str] -> [T i name str]) -> Filter i name strSource
processSubTreesAttrs :: (Name name -> Bool) -> (([T name str], [T i name str]) -> ([T name str], [T i name str])) -> Filter i name strSource
applicative functor tree processors
mapTextA :: Applicative m => (String -> m String) -> FilterA m i name StringSource
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 strSource
Character decoding
unescape :: T i name T -> T i name StringSource
escape :: T i name String -> T i name TSource
Use ASCII characters, XML entity references and character references for representing strings. That's not human readable, but portable.
decodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> [T i name String]Source
Decode characters like those from UTF-8 scheme.
maybeDecodeSpecialChars :: (Tag name, Attribute name) => String -> T i name T -> Maybe [T i name String]Source
decodeSpecialCharsDecoder :: (Tag name, Attribute name) => DecodingFctEmbedErrors -> T i name T -> [T i name String]Source
Conversion errors are appended as warnings to the tree.
decodeAttrs :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> [T name T] -> Writer [String] [T name String]Source
decodeAttr :: (Tag name, Attribute name) => (T -> EmbeddedExceptions) -> Name name -> T -> Writer [String] StringSource
maybeDecodeUTF8Chars :: String -> T i name T -> Maybe (T i name String)Source
Formatting
formatMany :: (Tag name, Attribute name, C string) => [T i name string] -> ShowSSource
format :: (Tag name, Attribute name, C string) => T i name string -> ShowSSource
formatBranch :: (Tag name, Attribute name, C string) => Branch name string -> [ShowS] -> ShowSSource
formatLeaf :: (Tag name, Attribute name, C string) => Leaf name string -> ShowSSource
Produced by Haddock version 2.6.0