clojure.zip

since v0.0-927

append-child - function
(append-child loc item)
Inserts the item as the rightmost child of the node at this loc,
without moving

branch? - function
(branch? loc)
Returns true if the node at loc is a branch

children - function
(children loc)
Returns a seq of the children of node at loc, which must be a branch

down - function
(down loc)
Returns the loc of the leftmost child of the node at this loc, or
nil if no children

edit - function
(edit loc f & args)
Replaces the node at this loc with the value of (f node args)

end? - function
(end? loc)
Returns true if loc represents the end of a depth-first walk

insert-child - function
(insert-child loc item)
Inserts the item as the leftmost child of the node at this loc,
without moving

insert-left - function
(insert-left loc item)
Inserts the item as the left sibling of the node at this loc,
without moving

insert-right - function
(insert-right loc item)
Inserts the item as the right sibling of the node at this loc,
without moving

left - function
(left loc)
Returns the loc of the left sibling of the node at this loc, or nil

leftmost - function
(leftmost loc)
Returns the loc of the leftmost sibling of the node at this loc, or self

lefts - function
(lefts loc)
Returns a seq of the left siblings of this loc

make-node - function
(make-node loc node children)
Returns a new branch node, given an existing node and new
children. The loc is only used to supply the constructor.

(next loc)
Moves to the next loc in the hierarchy, depth-first. When reaching
the end, returns a distinguished loc detectable via end?. If already
at the end, stays there.

node - function
(node loc)
Returns the node at loc

path - function
(path loc)
Returns a seq of nodes leading to this loc

(prev loc)
Moves to the previous loc in the hierarchy, depth-first. If already
at the root, returns nil.

remove - function
(remove loc)
Removes the node at loc, returning the loc that would have preceded
it in a depth-first walk.

replace - function
(replace loc node)
Replaces the node at this loc, without moving

(right loc)
Returns the loc of the right sibling of the node at this loc, or nil

rightmost - function
(rightmost loc)
Returns the loc of the rightmost sibling of the node at this loc, or self

rights - function
(rights loc)
Returns a seq of the right siblings of this loc

root - function
(root loc)
zips all the way up and returns the root node, reflecting any
changes.

seq-zip - function
(seq-zip root)
Returns a zipper for nested sequences, given a root sequence

up - function
(up loc)
Returns the loc of the parent of the node at this loc, or nil if at
the top

vector-zip - function
(vector-zip root)
Returns a zipper for nested vectors, given a root vector

xml-zip - function
(xml-zip root)
Returns a zipper for xml elements (as from xml/parse),
given a root element

zipper - function
(zipper branch? children make-node root)
Creates a new zipper structure. 

branch? is a fn that, given a node, returns true if can have
children, even if it currently doesn't.

children is a fn that, given a branch node, returns a seq of its
children.

make-node is a fn that, given an existing node and a seq of
children, returns a new branch node with the supplied children.
root is the root node.