diff options
Diffstat (limited to 'src/components/script/dom')
-rw-r--r-- | src/components/script/dom/htmlscriptelement.rs | 13 | ||||
-rw-r--r-- | src/components/script/dom/node.rs | 20 |
2 files changed, 15 insertions, 18 deletions
diff --git a/src/components/script/dom/htmlscriptelement.rs b/src/components/script/dom/htmlscriptelement.rs index 7d61e316a6f..af4c6a5ded6 100644 --- a/src/components/script/dom/htmlscriptelement.rs +++ b/src/components/script/dom/htmlscriptelement.rs @@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::HTMLScriptElementBinding; use dom::bindings::codegen::Bindings::HTMLScriptElementBinding::HTMLScriptElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::codegen::InheritTypes::HTMLScriptElementDerived; -use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast, TextCast}; +use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast}; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::document::Document; @@ -14,7 +14,6 @@ use dom::element::{HTMLScriptElementTypeId, Element, AttributeHandlers}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::node::{Node, NodeHelpers, ElementNodeTypeId}; -use dom::text::Text; use servo_util::str::DOMString; #[deriving(Encodable)] @@ -50,15 +49,7 @@ impl<'a> HTMLScriptElementMethods for JSRef<'a, HTMLScriptElement> { // http://www.whatwg.org/html/#dom-script-text fn Text(&self) -> DOMString { let node: &JSRef<Node> = NodeCast::from_ref(self); - let mut content = String::new(); - for child in node.children() { - let text: Option<&JSRef<Text>> = TextCast::to_ref(&child); - match text { - Some(text) => content.push_str(text.characterdata.data.borrow().as_slice()), - None => (), - } - } - content + Node::collect_text_contents(node.children()) } // http://www.whatwg.org/html/#dom-script-text diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index cbb6996dc47..22566833057 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -1408,6 +1408,18 @@ impl Node { pub unsafe fn unsafe_get_flags(&self) -> *const NodeFlags { mem::transmute(&self.flags) } + + pub fn collect_text_contents<'a, T: Iterator<JSRef<'a, Node>>>(mut iterator: T) -> String { + let mut content = String::new(); + for node in iterator { + let text: Option<&JSRef<Text>> = TextCast::to_ref(&node); + match text { + Some(text) => content.push_str(text.characterdata.data.borrow().as_slice()), + None => (), + } + } + content + } } impl<'a> NodeMethods for JSRef<'a, Node> { @@ -1553,13 +1565,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { match self.type_id { DocumentFragmentNodeTypeId | ElementNodeTypeId(..) => { - let mut content = String::new(); - for node in self.traverse_preorder() { - if node.is_text() { - let text: &JSRef<Text> = TextCast::to_ref(&node).unwrap(); - content.push_str(text.deref().characterdata.data.deref().borrow().as_slice()); - } - } + let content = Node::collect_text_contents(self.traverse_preorder()); Some(content) } CommentNodeTypeId | |