hexpat-0.17: XML parser/formatter based on expatSource codeContentsIndex
Text.XML.Expat.Internal.NodeClass
Description
Type classes to allow for XML handling functions to be generalized to work with different node types, including the ones defined in Tree and Annotated.
Synopsis
type Attributes tag text = [(tag, text)]
type UAttributes text = Attributes text text
textContent :: (NodeClass n [], Monoid text) => n [] tag text -> text
type family ListOf n
class (Functor c, List c) => NodeClass n c where
isElement :: n c tag text -> Bool
isText :: n c tag text -> Bool
textContentM :: Monoid text => n c tag text -> ItemM c text
isNamed :: Eq tag => tag -> n c tag text -> Bool
getName :: Monoid tag => n c tag text -> tag
getAttributes :: n c tag text -> [(tag, text)]
getChildren :: n c tag text -> c (n c tag text)
getText :: Monoid text => n c tag text -> text
modifyName :: (tag -> tag) -> n c tag text -> n c tag text
modifyAttributes :: ([(tag, text)] -> [(tag, text)]) -> n c tag text -> n c tag text
modifyChildren :: (c (n c tag text) -> c (n c tag text)) -> n c tag text -> n c tag text
modifyElement :: ((tag, [(tag, text)], c (n c tag text)) -> (tag', [(tag', text)], c (n c tag' text))) -> n c tag text -> n c tag' text
mapAllTags :: (tag -> tag') -> n c tag text -> n c tag' text
mapNodeContainer :: List c' => (forall a. c a -> ItemM c (c' a)) -> n c tag text -> ItemM c (n c' tag text)
mkText :: text -> n c tag text
mapElement :: NodeClass n c => ((tag, [(tag, text)], c (n c tag text)) -> (tag', [(tag', text)], c (n c tag' text))) -> n c tag text -> n c tag' text
mapNodeListContainer :: (NodeClass n c, List c') => (forall a. c a -> ItemM c (c' a)) -> c (n c tag text) -> ItemM c (c' (n c' tag text))
fromNodeContainer :: (NodeClass n c, List c') => n c tag text -> ItemM c (n c' tag text)
fromNodeListContainer :: (NodeClass n c, List c') => c (n c tag text) -> ItemM c (c' (n c' tag text))
class NodeClass n c => MkElementClass n c where
mkElement :: tag -> Attributes tag text -> c (n c tag text) -> n c tag text
getAttribute :: (NodeClass n c, GenericXMLString tag) => n c tag text -> tag -> Maybe text
setAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> text -> n c tag text -> n c tag text
deleteAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> n c tag text -> n c tag text
alterAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> Maybe text -> n c tag text -> n c tag text
fromElement :: (NodeClass n c, MkElementClass n' c, Monoid tag, Monoid text) => n c tag text -> n' c tag text
fromElement_ :: (NodeClass n c, NodeClass n' c, Monoid tag, Monoid text) => (tag -> Attributes tag text -> c (n' c tag text) -> n' c tag text) -> n c tag text -> n' c tag text
fromNodes :: (NodeClass n c, MkElementClass n' c, Monoid tag, Monoid text) => c (n c tag text) -> c (n' c tag text)
fromNodes_ :: (NodeClass n c, NodeClass n' c, Monoid tag, Monoid text) => (tag -> Attributes tag text -> c (n' c tag text) -> n' c tag text) -> c (n c tag text) -> c (n' c tag text)
Documentation
type Attributes tag text = [(tag, text)]Source
Type shortcut for attributes
type UAttributes text = Attributes text textSource
Type shortcut for attributes with unqualified names where tag and text are the same string type.
textContent :: (NodeClass n [], Monoid text) => n [] tag text -> textSource
Extract all text content from inside a tag into a single string, including any text contained in children.
type family ListOf n Source
A type function to give the type of a list of nodes, using the appropriate list type for the specified node type, e.g. ListOf (UNode Text)
class (Functor c, List c) => NodeClass n c whereSource
Methods
isElement :: n c tag text -> BoolSource
Is the given node an element?
isText :: n c tag text -> BoolSource
Is the given node text?
textContentM :: Monoid text => n c tag text -> ItemM c textSource
Extract all text content from inside a tag into a single string, including any text contained in children.
isNamed :: Eq tag => tag -> n c tag text -> BoolSource
Is the given node a tag with the given name?
getName :: Monoid tag => n c tag text -> tagSource
Get the name of this node if it's an element, return empty string otherwise.
getAttributes :: n c tag text -> [(tag, text)]Source
Get the attributes of a node if it's an element, return empty list otherwise.
getChildren :: n c tag text -> c (n c tag text)Source
Get children of a node if it's an element, return empty list otherwise.
getText :: Monoid text => n c tag text -> textSource
Get this node's text if it's a text node, return empty text otherwise.
modifyName :: (tag -> tag) -> n c tag text -> n c tag textSource
Modify name if it's an element, no-op otherwise.
modifyAttributes :: ([(tag, text)] -> [(tag, text)]) -> n c tag text -> n c tag textSource
Modify attributes if it's an element, no-op otherwise.
modifyChildren :: (c (n c tag text) -> c (n c tag text)) -> n c tag text -> n c tag textSource
Modify children (non-recursively) if it's an element, no-op otherwise.
modifyElement :: ((tag, [(tag, text)], c (n c tag text)) -> (tag', [(tag', text)], c (n c tag' text))) -> n c tag text -> n c tag' textSource
Map an element non-recursively, allowing the tag type to be changed.
mapAllTags :: (tag -> tag') -> n c tag text -> n c tag' textSource
Map all tags (both tag names and attribute names) recursively.
mapNodeContainer :: List c' => (forall a. c a -> ItemM c (c' a)) -> n c tag text -> ItemM c (n c' tag text)Source
Change a node recursively from one container type to another, with a specified function to convert the container type.
mkText :: text -> n c tag textSource
Generic text node constructor.
show/hide Instances
(Functor c, List c) => NodeClass NodeG c
(Functor c, List c) => NodeClass (NodeG a) c
mapElement :: NodeClass n c => ((tag, [(tag, text)], c (n c tag text)) -> (tag', [(tag', text)], c (n c tag' text))) -> n c tag text -> n c tag' textSource
DEPRECATED. Map an element non-recursively, allowing the tag type to be changed.
mapNodeListContainer :: (NodeClass n c, List c') => (forall a. c a -> ItemM c (c' a)) -> c (n c tag text) -> ItemM c (c' (n c' tag text))Source
Change a list of nodes recursively from one container type to another, with a specified function to convert the container type.
fromNodeContainer :: (NodeClass n c, List c') => n c tag text -> ItemM c (n c' tag text)Source
Change a node recursively from one container type to another. This extracts the entire tree contents to standard lists and re-constructs them with the new container type. For monadic list types used in hexpat-iteratee this operation forces evaluation.
fromNodeListContainer :: (NodeClass n c, List c') => c (n c tag text) -> ItemM c (c' (n c' tag text))Source
Change a list of nodes recursively from one container type to another. This extracts the entire tree contents to standard lists and re-constructs them with the new container type. For monadic list types used in hexpat-iteratee this operation forces evaluation.
class NodeClass n c => MkElementClass n c whereSource
A class of node types where an Element can be constructed given a tag, attributes and children.
Methods
mkElement :: tag -> Attributes tag text -> c (n c tag text) -> n c tag textSource
Generic element constructor.
show/hide Instances
getAttribute :: (NodeClass n c, GenericXMLString tag) => n c tag text -> tag -> Maybe textSource
Get the value of the attribute having the specified name.
setAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> text -> n c tag text -> n c tag textSource
Set the value of the attribute with the specified name to the value, overwriting the first existing attribute with that name if present.
deleteAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> n c tag text -> n c tag textSource
Delete the first attribute matching the specified name.
alterAttribute :: (Eq tag, NodeClass n c, GenericXMLString tag) => tag -> Maybe text -> n c tag text -> n c tag textSource
setAttribute if Just, deleteAttribute if Nothing.
fromElement :: (NodeClass n c, MkElementClass n' c, Monoid tag, Monoid text) => n c tag text -> n' c tag textSource
Generically convert an element of one node type to another. Useful for adding or removing annotations.
fromElement_Source
:: (NodeClass n c, NodeClass n' c, Monoid tag, Monoid text)
=> tag -> Attributes tag text -> c (n' c tag text) -> n' c tag textElement constructor
-> n c tag text
-> n' c tag text
Generically convert an element of one node type to another, using the specified element constructor. Useful for adding or removing annotations.
fromNodes :: (NodeClass n c, MkElementClass n' c, Monoid tag, Monoid text) => c (n c tag text) -> c (n' c tag text)Source
Generically convert a list of nodes from one node type to another. Useful for adding or removing annotations.
fromNodes_Source
:: (NodeClass n c, NodeClass n' c, Monoid tag, Monoid text)
=> tag -> Attributes tag text -> c (n' c tag text) -> n' c tag textElement constructor
-> c (n c tag text)
-> c (n' c tag text)
Generically convert a list of nodes from one node type to another, using the specified element constructor. Useful for adding or removing annotations.
Produced by Haddock version 2.6.1