scc-0.5: Streaming component combinatorsSource codeContentsIndex
Control.Concurrent.SCC.XML
Contents
Types
Parsing XML
Showing XML
Splitters
SplitterComponent combinators
Description
Module XML defines primitives and combinators for parsing and manipulating XML.
Synopsis
data Token
= StartTag
| EndTag
| EmptyTag
| ElementName
| AttributeName
| AttributeValue
| EntityReferenceToken
| EntityName
| ProcessingInstruction
| ProcessingInstructionText
| Comment
| CommentText
| StartMarkedSectionCDATA
| EndMarkedSection
| ErrorToken String
tokens :: Monad m => Splitter m Char (Boundary Token)
parseTokens :: Monad m => Parser m Char Token
expandEntity :: String -> String
escapeAttributeCharacter :: Char -> String
escapeContentCharacter :: Char -> String
element :: Monad m => Splitter m (Markup Token Char) ()
elementContent :: Monad m => Splitter m (Markup Token Char) ()
elementName :: Monad m => Splitter m (Markup Token Char) ()
attribute :: Monad m => Splitter m (Markup Token Char) ()
attributeName :: Monad m => Splitter m (Markup Token Char) ()
attributeValue :: Monad m => Splitter m (Markup Token Char) ()
elementHavingTag :: forall m b. MonadParallel m => Splitter m (Markup Token Char) b -> Splitter m (Markup Token Char) b
havingText :: forall m b1 b2. MonadParallel m => Bool -> Splitter m (Markup Token Char) b1 -> Splitter m Char b2 -> Splitter m (Markup Token Char) b1
havingOnlyText :: forall m b1 b2. MonadParallel m => Bool -> Splitter m (Markup Token Char) b1 -> Splitter m Char b2 -> Splitter m (Markup Token Char) b1
Types
data Token Source
Constructors
StartTag
EndTag
EmptyTag
ElementName
AttributeName
AttributeValue
EntityReferenceToken
EntityName
ProcessingInstruction
ProcessingInstructionText
Comment
CommentText
StartMarkedSectionCDATA
EndMarkedSection
ErrorToken String
show/hide Instances
Parsing XML
tokens :: Monad m => Splitter m Char (Boundary Token)Source
The tokens splitter distinguishes XML markup from data content. It is used by parseTokens.
parseTokens :: Monad m => Parser m Char TokenSource
The XML token parser. This parser converts plain text to parsed text, which is a precondition for using the remaining XML components.
expandEntity :: String -> StringSource
Converts an XML entity name into the text value it represents: expandEntity "lt" = "<".
Showing XML
escapeAttributeCharacter :: Char -> StringSource
Escapes a character for inclusion into an XML attribute value.
escapeContentCharacter :: Char -> StringSource
Escapes a character for inclusion into the XML data content.
Splitters
element :: Monad m => Splitter m (Markup Token Char) ()Source
Splits all top-level elements with all their content to true, all other input to false.
elementContent :: Monad m => Splitter m (Markup Token Char) ()Source
Splits the content of all top-level elements to true, their tags and intervening input to false.
elementName :: Monad m => Splitter m (Markup Token Char) ()Source
Splits every element name, including the names of nested elements and names in end tags, to true, all the rest of input to false.
attribute :: Monad m => Splitter m (Markup Token Char) ()Source
Splits every attribute specification to true, everything else to false.
attributeName :: Monad m => Splitter m (Markup Token Char) ()Source
Splits every attribute name to true, all the rest of input to false.
attributeValue :: Monad m => Splitter m (Markup Token Char) ()Source
Splits every attribute value, excluding the quote delimiters, to true, all the rest of input to false.
SplitterComponent combinators
elementHavingTag :: forall m b. MonadParallel m => Splitter m (Markup Token Char) b -> Splitter m (Markup Token Char) bSource
Similiar to (Control.Concurrent.SCC.Combinators.having element), except it runs the argument splitter only on each element's start tag, not on the entire element with its content.
havingText :: forall m b1 b2. MonadParallel m => Bool -> Splitter m (Markup Token Char) b1 -> Splitter m Char b2 -> Splitter m (Markup Token Char) b1Source
Behaves like Control.Concurrent.SCC.Combinators.having, but the right-hand splitter works on plain instead of marked-up text. This allows regular Char splitters to be applied to parsed XML.
havingOnlyText :: forall m b1 b2. MonadParallel m => Bool -> Splitter m (Markup Token Char) b1 -> Splitter m Char b2 -> Splitter m (Markup Token Char) b1Source
Behaves like Control.Concurrent.SCC.Combinators.havingOnly, but the right-hand splitter works on plain instead of marked-up text. This allows regular Char splitters to be applied to parsed XML.
Produced by Haddock version 2.7.2