implemented Node.normalize()

This commit is contained in:
Shamir Khodzha 2014-03-12 18:33:31 +04:00
parent af616dba58
commit 574fba310f
3 changed files with 58 additions and 2 deletions

View file

@ -1422,8 +1422,28 @@ impl Node {
}
// http://dom.spec.whatwg.org/#dom-node-normalize
pub fn Normalize(&mut self) {
// FIXME (#1823) implement.
pub fn Normalize(&mut self, abstract_self: &mut JS<Node>) {
let mut prev_text = None;
for mut child in self.children() {
if child.is_text() {
let characterdata: JS<CharacterData> = CharacterDataCast::to(&child);
if characterdata.get().Length() == 0 {
abstract_self.remove_child(&mut child);
} else {
match prev_text {
Some(ref text_node) => {
let mut prev_characterdata: JS<CharacterData> = CharacterDataCast::to(text_node);
prev_characterdata.get_mut().AppendData(characterdata.get().Data());
abstract_self.remove_child(&mut child);
},
None => prev_text = Some(child)
}
}
} else {
prev_text = None;
}
}
}
// http://dom.spec.whatwg.org/#dom-node-clonenode