Use eq() and eq_slice() less, and map_default() more.

This commit is contained in:
Ms2ger 2014-02-16 10:24:24 +01:00
parent ecc07e3b49
commit e45b7fa22d
7 changed files with 35 additions and 40 deletions

View file

@ -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 {

View file

@ -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);
}
},

View file

@ -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)
}
}