From e45b7fa22d85bb410c2c9a82aa6b4e04b3207452 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sun, 16 Feb 2014 10:24:24 +0100 Subject: [PATCH] Use eq() and eq_slice() less, and map_default() more. --- src/components/main/layout/wrapper.rs | 8 +++---- src/components/script/dom/document.rs | 10 ++++---- src/components/script/dom/element.rs | 5 ++-- src/components/script/dom/htmldocument.rs | 23 ++++++++++--------- .../script/html/hubbub_html_parser.rs | 3 +-- src/components/script/script_task.rs | 8 +++---- src/components/style/selector_matching.rs | 18 +++++++-------- 7 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/components/main/layout/wrapper.rs b/src/components/main/layout/wrapper.rs index 8fc8bad2a33..2e67eff3567 100644 --- a/src/components/main/layout/wrapper.rs +++ b/src/components/main/layout/wrapper.rs @@ -241,13 +241,11 @@ impl<'ln> TNode> for LayoutNode<'ln> { }; match attr.namespace { SpecificNamespace(ref ns) => { - match element.get_attr(ns, name) { - Some(value) => test(value), - None => false, - } + element.get_attr(ns, name) + .map_default(false, |attr| test(attr)) }, // FIXME: https://github.com/mozilla/servo/issues/1558 - AnyNamespace => return false, + AnyNamespace => false, } }) } diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 4807eaa02ad..b0a9f4b34e0 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -32,7 +32,6 @@ use js::jsapi::{JSObject, JSContext, JSTracer}; use std::ascii::StrAsciiExt; use std::cast; use std::hashmap::HashMap; -use std::str::eq_slice; use std::unstable::raw::Box; #[deriving(Eq)] @@ -247,7 +246,7 @@ impl Document { // http://dom.spec.whatwg.org/#dom-document-getelementsbytagname pub fn GetElementsByTagName(&self, tag: DOMString) -> @mut HTMLCollection { - self.createHTMLCollection(|elem| eq_slice(elem.tag_name, tag)) + self.createHTMLCollection(|elem| elem.tag_name == tag) } // http://dom.spec.whatwg.org/#dom-document-getelementsbytagnamens @@ -467,8 +466,11 @@ impl Document { // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-getelementsbyname pub fn GetElementsByName(&self, name: DOMString) -> @mut HTMLCollection { - self.createHTMLCollection(|elem| - elem.get_attribute(Null, "name").is_some() && eq_slice(elem.get_attribute(Null, "name").unwrap().value_ref(), name)) + self.createHTMLCollection(|elem| { + elem.get_attribute(Null, "name").map_default(false, |attr| { + attr.value_ref() == name + }) + }) } pub fn createHTMLCollection(&self, callback: |elem: &Element| -> bool) -> @mut HTMLCollection { diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 08b99a4e015..8efd60b8d4c 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -26,7 +26,6 @@ use servo_util::str::{DOMString, null_str_as_empty_ref}; use std::ascii::StrAsciiExt; use std::cast; -use std::str::eq; use std::unstable::raw::Box; pub struct Element { @@ -181,8 +180,8 @@ impl Element { match prefix { Some(ref prefix_str) => { if (namespace == namespace::Null || - (eq(prefix_str, &~"xml") && namespace != namespace::XML) || - (eq(prefix_str, &~"xmlns") && namespace != namespace::XMLNS)) { + ("xml" == prefix_str.as_slice() && namespace != namespace::XML) || + ("xmlns" == prefix_str.as_slice() && namespace != namespace::XMLNS)) { return Err(NamespaceError); } }, diff --git a/src/components/script/dom/htmldocument.rs b/src/components/script/dom/htmldocument.rs index 6dcab51fa89..8297fd3e90c 100644 --- a/src/components/script/dom/htmldocument.rs +++ b/src/components/script/dom/htmldocument.rs @@ -11,7 +11,6 @@ use servo_util::namespace::Null; use extra::url::Url; use js::jsapi::JSTracer; -use std::str::eq_slice; pub struct HTMLDocument { parent: Document @@ -32,11 +31,11 @@ impl HTMLDocument { impl HTMLDocument { pub fn Images(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| eq_slice(elem.tag_name, "img")) + self.parent.createHTMLCollection(|elem| "img" == elem.tag_name) } pub fn Embeds(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| eq_slice(elem.tag_name, "embed")) + self.parent.createHTMLCollection(|elem| "embed" == elem.tag_name) } pub fn Plugins(&self) -> @mut HTMLCollection { @@ -44,27 +43,29 @@ impl HTMLDocument { } pub fn Links(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| - (eq_slice(elem.tag_name, "a") || eq_slice(elem.tag_name, "area")) - && elem.get_attribute(Null, "href").is_some()) + self.parent.createHTMLCollection(|elem| { + ("a" == elem.tag_name || "area" == elem.tag_name) && + elem.get_attribute(Null, "href").is_some() + }) } pub fn Forms(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| eq_slice(elem.tag_name, "form")) + self.parent.createHTMLCollection(|elem| "form" == elem.tag_name) } pub fn Scripts(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| eq_slice(elem.tag_name, "script")) + self.parent.createHTMLCollection(|elem| "script" == elem.tag_name) } pub fn Anchors(&self) -> @mut HTMLCollection { - self.parent.createHTMLCollection(|elem| - eq_slice(elem.tag_name, "a") && elem.get_attribute(Null, "name").is_some()) + self.parent.createHTMLCollection(|elem| { + "a" == elem.tag_name && elem.get_attribute(Null, "name").is_some() + }) } pub fn Applets(&self) -> @mut HTMLCollection { // FIXME: This should be return OBJECT elements containing applets. - self.parent.createHTMLCollection(|elem| eq_slice(elem.tag_name, "applet")) + self.parent.createHTMLCollection(|elem| "applet" == elem.tag_name) } } diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index ac50e9cfc34..1079e5986ef 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -27,7 +27,6 @@ use std::cast; use std::cell::RefCell; use std::comm::{Port, SharedChan}; use std::from_str::FromStr; -use std::str::eq_slice; use std::str; use style::Stylesheet; @@ -37,7 +36,7 @@ macro_rules! handle_element( $string: expr, $ctor: ident $(, $arg:expr )*) => ( - if eq_slice($localName, $string) { + if $string == $localName { return $ctor::new($localName, $document $(, $arg)*); } ) diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index b835798e874..8a56291b95f 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -49,7 +49,6 @@ use servo_util::task::send_on_failure; use servo_util::namespace::Null; use std::comm::{Port, SharedChan}; use std::ptr; -use std::str::eq_slice; use std::task; use std::util::replace; @@ -796,10 +795,9 @@ impl ScriptTask { let mut anchors = doc_node.traverse_preorder().filter(|node| node.is_anchor_element()); anchors.find(|node| { node.with_imm_element(|elem| { - match elem.get_attribute(Null, "name") { - Some(name) => eq_slice(name.value_ref(), fragid), - None => false - } + elem.get_attribute(Null, "name").map_default(false, |attr| { + attr.value_ref() == fragid + }) }) }) } diff --git a/src/components/style/selector_matching.rs b/src/components/style/selector_matching.rs index a113ccea12c..7eddb74ded6 100644 --- a/src/components/style/selector_matching.rs +++ b/src/components/style/selector_matching.rs @@ -5,7 +5,6 @@ use extra::arc::Arc; use std::ascii::StrAsciiExt; use std::hashmap::HashMap; -use std::str; use std::to_bytes; use servo_util::namespace; @@ -596,21 +595,20 @@ fn matches_simple_selector { *shareable = false; element.with_element(|element: &E| { - match element.get_attr(&namespace::Null, "id") { - Some(attr) => str::eq_slice(attr, *id), - None => false - } + element.get_attr(&namespace::Null, "id") + .map_default(false, |attr| { + attr == *id + }) }) } // TODO: cache and intern class names on elements. ClassSelector(ref class) => { element.with_element(|element: &E| { - match element.get_attr(&namespace::Null, "class") { - None => false, + element.get_attr(&namespace::Null, "class") + .map_default(false, |attr| { // TODO: case-sensitivity depends on the document type and quirks mode - Some(ref class_attr) - => class_attr.split(SELECTOR_WHITESPACE).any(|c| c == class.as_slice()), - } + attr.split(SELECTOR_WHITESPACE).any(|c| c == class.as_slice()) + }) }) }