Copyright | (c) Galois, Inc. 2008 |
---|---|
License | BSD3 |
Maintainer | Iavor S. Diatchki <diatchki@galois.com> |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
Text.XML.Light.Cursor
Contents
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.
- data Tag = Tag {}
- getTag :: Element -> Tag
- setTag :: Tag -> Element -> Element
- fromTag :: Tag -> [Content] -> Element
- data Cursor = Cur {}
- type Path = [([Content], Tag, [Content])]
- fromContent :: Content -> Cursor
- fromElement :: Element -> Cursor
- fromForest :: [Content] -> Maybe Cursor
- toForest :: Cursor -> [Content]
- toTree :: Cursor -> Content
- parent :: Cursor -> Maybe Cursor
- root :: Cursor -> Cursor
- getChild :: Int -> Cursor -> Maybe Cursor
- firstChild :: Cursor -> Maybe Cursor
- lastChild :: Cursor -> Maybe Cursor
- left :: Cursor -> Maybe Cursor
- right :: Cursor -> Maybe Cursor
- nextDF :: Cursor -> Maybe Cursor
- findChild :: (Cursor -> Bool) -> Cursor -> Maybe Cursor
- findLeft :: (Cursor -> Bool) -> Cursor -> Maybe Cursor
- findRight :: (Cursor -> Bool) -> Cursor -> Maybe Cursor
- findRec :: (Cursor -> Bool) -> Cursor -> Maybe Cursor
- isRoot :: Cursor -> Bool
- isFirst :: Cursor -> Bool
- isLast :: Cursor -> Bool
- isLeaf :: Cursor -> Bool
- isChild :: Cursor -> Bool
- hasChildren :: Cursor -> Bool
- getNodeIndex :: Cursor -> Int
- setContent :: Content -> Cursor -> Cursor
- modifyContent :: (Content -> Content) -> Cursor -> Cursor
- modifyContentM :: Monad m => (Content -> m Content) -> Cursor -> m Cursor
- insertLeft :: Content -> Cursor -> Cursor
- insertRight :: Content -> Cursor -> Cursor
- insertGoLeft :: Content -> Cursor -> Cursor
- insertGoRight :: Content -> Cursor -> Cursor
- removeLeft :: Cursor -> Maybe (Content, Cursor)
- removeRight :: Cursor -> Maybe (Content, Cursor)
- removeGoLeft :: Cursor -> Maybe Cursor
- removeGoRight :: Cursor -> Maybe Cursor
- removeGoUp :: Cursor -> Maybe Cursor
Documentation
The position of a piece of content in an XML document.
Constructors
Cur | |
Conversions
fromContent :: Content -> Cursor Source
A cursor for the given content.
fromElement :: Element -> Cursor Source
A cursor for the given element.
fromForest :: [Content] -> Maybe Cursor Source
The location of the first tree in a forest.
Moving around
firstChild :: Cursor -> Maybe Cursor Source
The first child of the given location.
nextDF :: Cursor -> Maybe Cursor Source
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 Source
The first child that satisfies a predicate.
findLeft :: (Cursor -> Bool) -> Cursor -> Maybe Cursor Source
Find the next left sibling that satisfies a predicate.
findRight :: (Cursor -> Bool) -> Cursor -> Maybe Cursor Source
Find the next right sibling that satisfies a predicate.
findRec :: (Cursor -> Bool) -> Cursor -> Maybe Cursor Source
Perform a depth first search for a descendant that satisfies the given predicate.
Node classification
hasChildren :: Cursor -> Bool Source
Do we have children?
getNodeIndex :: Cursor -> Int Source
Get the node index inside the sequence of children
Updates
setContent :: Content -> Cursor -> Cursor Source
Change the current content.
modifyContentM :: Monad m => (Content -> m Content) -> Cursor -> m Cursor Source
Modify the current content, allowing for an effect.
Inserting content
insertLeft :: Content -> Cursor -> Cursor Source
Insert content to the left of the current position.
insertRight :: Content -> Cursor -> Cursor Source
Insert content to the right of the current position.
insertGoLeft :: Content -> Cursor -> Cursor Source
Insert content to the left of the current position. The new content becomes the current position.
insertGoRight :: Content -> Cursor -> Cursor Source
Insert content to the right of the current position. The new content becomes the current position.
Removing content
removeLeft :: Cursor -> Maybe (Content, Cursor) Source
Remove the content on the left of the current position, if any.
removeRight :: Cursor -> Maybe (Content, Cursor) Source
Remove the content on the right of the current position, if any.
removeGoLeft :: Cursor -> Maybe Cursor Source
Remove the current element. The new position is the one on the left.
removeGoRight :: Cursor -> Maybe Cursor Source
Remove the current element. The new position is the one on the right.
removeGoUp :: Cursor -> Maybe Cursor Source
Remove the current element. The new position is the parent of the old position.