Cleanup Node::Normalize.

This commit is contained in:
Ms2ger 2014-12-05 15:09:13 +01:00
parent 19e44362e2
commit 327b5d0ce5

View file

@ -1972,25 +1972,27 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
fn Normalize(self) { fn Normalize(self) {
let mut prev_text = None; let mut prev_text = None;
for child in self.children() { for child in self.children() {
if child.is_text() { match TextCast::to_ref(child) {
let characterdata: JSRef<CharacterData> = CharacterDataCast::to_ref(child).unwrap(); Some(text) => {
if characterdata.Length() == 0 { let characterdata: JSRef<CharacterData> = CharacterDataCast::from_ref(text);
self.remove_child(child); if characterdata.Length() == 0 {
} else { self.remove_child(child);
match prev_text { } else {
Some(text_node) => { match prev_text {
let prev_characterdata: JSRef<CharacterData> = CharacterDataCast::to_ref(text_node).unwrap(); Some(text_node) => {
let _ = prev_characterdata.AppendData(characterdata.Data()); let prev_characterdata: JSRef<CharacterData> = CharacterDataCast::from_ref(text_node);
self.remove_child(child); let _ = prev_characterdata.AppendData(characterdata.Data());
}, self.remove_child(child);
None => prev_text = Some(child) },
None => prev_text = Some(text)
}
} }
},
None => {
child.Normalize();
prev_text = None;
} }
} else {
child.Normalize();
prev_text = None;
} }
} }
} }