class Sanitize
def traverse(node, &block)
Performs top-down traversal of the given node, operating first on the node
def traverse(node, &block) yield node child = node.child while child prev = child.previous_sibling traverse(child, &block) child = if child.parent == node child.next_sibling else # The child was unlinked or reparented, so traverse the previous node's # next sibling, or the parent's first child if there is no previous # node. prev ? prev.next_sibling : node.child end end end