|
| 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.7.2 |