|
Text.XML.Light.Cursor | Portability | portable | Stability | provisional | Maintainer | Iavor S. Diatchki <diatchki@galois.com> |
|
|
|
|
|
Description |
XML cursors for working XML content withing the context of
an XML document. This implementation is based on the general
tree zipper written by Krasimir Angelov and Iavor S. Diatchki.
|
|
Synopsis |
|
|
|
Documentation |
|
data Tag |
Constructors | | Instances | |
|
|
getTag :: Element -> Tag |
|
setTag :: Tag -> Element -> Element |
|
fromTag :: Tag -> [Content] -> Element |
|
data Cursor |
The position of a piece of content in an XML document.
| Constructors | Cur | | current :: Content | The currently selected content.
| lefts :: [Content] | Siblings on the left, closest first.
| rights :: [Content] | Siblings on the right, closest first.
| parents :: Path | The contexts of the parent elements of this location.
|
|
| Instances | |
|
|
type Path = [([Content], Tag, [Content])] |
|
Conversions
|
|
fromContent :: Content -> Cursor |
A cursor for the given content.
|
|
fromElement :: Element -> Cursor |
A cursor for the given element.
|
|
fromForest :: [Content] -> Maybe Cursor |
The location of the first tree in a forest.
|
|
toForest :: Cursor -> [Content] |
Computes the forest containing this location.
|
|
toTree :: Cursor -> Content |
Computes the tree containing this location.
|
|
Moving around
|
|
parent :: Cursor -> Maybe Cursor |
The parent of the given location.
|
|
root :: Cursor -> Cursor |
The top-most parent of the given location.
|
|
getChild :: Int -> Cursor -> Maybe Cursor |
The child with the given index (starting from 0).
|
|
firstChild :: Cursor -> Maybe Cursor |
The first child of the given location.
|
|
lastChild :: Cursor -> Maybe Cursor |
The last child of the given location.
|
|
left :: Cursor -> Maybe Cursor |
The left sibling of the given location.
|
|
right :: Cursor -> Maybe Cursor |
The right sibling of the given location.
|
|
nextDF :: Cursor -> Maybe Cursor |
The next position in a left-to-right depth-first traversal of a document:
either the first child, right sibling, or the right sibling of a parent that
has one.
|
|
Searching
|
|
findChild :: (Cursor -> Bool) -> Cursor -> Maybe Cursor |
The first child that satisfies a predicate.
|
|
findLeft :: (Cursor -> Bool) -> Cursor -> Maybe Cursor |
Find the next left sibling that satisfies a predicate.
|
|
findRight :: (Cursor -> Bool) -> Cursor -> Maybe Cursor |
Find the next right sibling that satisfies a predicate.
|
|
findRec :: (Cursor -> Bool) -> Cursor -> Maybe Cursor |
Perform a depth first search for a descendant that satisfies the
given predicate.
|
|
Node classification
|
|
isRoot :: Cursor -> Bool |
Are we at the top of the document?
|
|
isFirst :: Cursor -> Bool |
Are we at the left end of the the document?
|
|
isLast :: Cursor -> Bool |
Are we at the right end of the document?
|
|
isLeaf :: Cursor -> Bool |
Are we at the bottom of the document?
|
|
isChild :: Cursor -> Bool |
Do we have a parent?
|
|
hasChildren :: Cursor -> Bool |
Do we have children?
|
|
getNodeIndex :: Cursor -> Int |
Get the node index inside the sequence of children
|
|
Updates
|
|
setContent :: Content -> Cursor -> Cursor |
Change the current content.
|
|
modifyContent :: (Content -> Content) -> Cursor -> Cursor |
Modify the current content.
|
|
modifyContentM :: Monad m => (Content -> m Content) -> Cursor -> m Cursor |
Modify the current content, allowing for an effect.
|
|
Inserting content
|
|
insertLeft :: Content -> Cursor -> Cursor |
Insert content to the left of the current position.
|
|
insertRight :: Content -> Cursor -> Cursor |
Insert content to the right of the current position.
|
|
insertGoLeft :: Content -> Cursor -> Cursor |
Insert content to the left of the current position.
The new content becomes the current position.
|
|
insertGoRight :: Content -> Cursor -> Cursor |
Insert content to the right of the current position.
The new content becomes the current position.
|
|
Removing content
|
|
removeLeft :: Cursor -> Maybe (Content, Cursor) |
Remove the content on the left of the current position, if any.
|
|
removeRight :: Cursor -> Maybe (Content, Cursor) |
Remove the content on the right of the current position, if any.
|
|
removeGoLeft :: Cursor -> Maybe Cursor |
Remove the current element.
The new position is the one on the left.
|
|
removeGoRight :: Cursor -> Maybe Cursor |
Remove the current element.
The new position is the one on the right.
|
|
removeGoUp :: Cursor -> Maybe Cursor |
Remove the current element.
The new position is the parent of the old position.
|
|
Produced by Haddock version 2.6.0 |