///|
fn empty_transform_node(node : @dom.Node) -> Bool {
let had_children = !node.children.is_empty()
while !node.children.is_empty() {
let child = node.children[0]
ignore(node.children.remove(0))
if child.parent is Some(current_parent) &&
physical_equal(current_parent, node) {
child.parent = None
}
}
had_children
}
///|
fn apply_edit_document_transform(
node : @dom.Node,
transform : TransformSpec,
) -> Unit {
match transform.node_callback {
Some(callback) => {
transform_call_hook(node, transform)
transform_report(transform, "Edited document root", Some(node))
(callback.callback)(node)
}
None => ()
}
}
///|
fn apply_edit_transform(node : @dom.Node, transform : TransformSpec) -> Unit {
match transform.node_callback {
Some(callback) => {
transform_report_node_action(node, transform, "Edited")
(callback.callback)(node)
}
None => ()
}
}
///|
fn escape_transform_child_at(parent : @dom.Node, index : Int) -> Int {
let child = parent.children[index]
let start_tag = @ser.serialize_start_tag_unchecked(child, '"')
let end_tag = @san.escaped_end_tag_for(child)
ignore(parent.children.remove(index))
if child.parent is Some(current_parent) &&
physical_equal(parent, current_parent) {
child.parent = None
}
let mut inserted = 0
let start = @dom.text(start_tag)
start.parent = Some(parent)
parent.children.insert(index + inserted, start)
inserted += 1
while !child.children.is_empty() {
let grandchild = child.children[0]
ignore(child.children.remove(0))
grandchild.parent = Some(parent)
parent.children.insert(index + inserted, grandchild)
inserted += 1
}
match end_tag {
Some(value) => {
let end = @dom.text(value)
end.parent = Some(parent)
parent.children.insert(index + inserted, end)
inserted += 1
}
None => ()
}
inserted
}