Make Element::prefix return an Option<&DOMString>

This commit is contained in:
Anthony Ramine 2016-11-30 13:45:10 +01:00
parent 2fcb908daa
commit a377caa7e9
4 changed files with 10 additions and 10 deletions

View file

@ -714,8 +714,8 @@ impl Element {
&self.namespace &self.namespace
} }
pub fn prefix(&self) -> &Option<DOMString> { pub fn prefix(&self) -> Option<&DOMString> {
&self.prefix self.prefix.as_ref()
} }
pub fn attrs(&self) -> Ref<[JS<Attr>]> { pub fn attrs(&self) -> Ref<[JS<Attr>]> {

View file

@ -151,11 +151,11 @@ impl HTMLCollection {
} }
fn match_element(elem: &Element, qualified_name: &LocalName) -> bool { fn match_element(elem: &Element, qualified_name: &LocalName) -> bool {
match *elem.prefix() { match elem.prefix() {
None => elem.local_name() == qualified_name, None => elem.local_name() == qualified_name,
Some(ref prefix) => qualified_name.starts_with(prefix as &str) && Some(prefix) => qualified_name.starts_with(&**prefix) &&
qualified_name.find(":") == Some((prefix as &str).len()) && qualified_name.find(":") == Some(prefix.len()) &&
qualified_name.ends_with(elem.local_name() as &str), qualified_name.ends_with(&**elem.local_name()),
} }
} }

View file

@ -1738,7 +1738,7 @@ impl Node {
local: element.local_name().clone() local: element.local_name().clone()
}; };
let element = Element::create(name, let element = Element::create(name,
element.prefix().as_ref().map(|p| Prefix::from(&**p)), element.prefix().map(|p| Prefix::from(&**p)),
&document, ElementCreator::ScriptCreated); &document, ElementCreator::ScriptCreated);
Root::upcast::<Node>(element) Root::upcast::<Node>(element)
}, },
@ -1827,7 +1827,7 @@ impl Node {
NodeTypeId::Element(_) => { NodeTypeId::Element(_) => {
let element = node.downcast::<Element>().unwrap(); let element = node.downcast::<Element>().unwrap();
// Step 1. // Step 1.
if *element.namespace() != ns!() && *element.prefix() == prefix { if *element.namespace() != ns!() && element.prefix() == prefix.as_ref() {
return element.namespace().clone() return element.namespace().clone()
} }
@ -2236,7 +2236,7 @@ impl NodeMethods for Node {
let element = node.downcast::<Element>().unwrap(); let element = node.downcast::<Element>().unwrap();
let other_element = other.downcast::<Element>().unwrap(); let other_element = other.downcast::<Element>().unwrap();
(*element.namespace() == *other_element.namespace()) && (*element.namespace() == *other_element.namespace()) &&
(*element.prefix() == *other_element.prefix()) && (element.prefix() == other_element.prefix()) &&
(*element.local_name() == *other_element.local_name()) && (*element.local_name() == *other_element.local_name()) &&
(element.attrs().len() == other_element.attrs().len()) (element.attrs().len() == other_element.attrs().len())
} }

View file

@ -114,7 +114,7 @@ impl<'a> TreeSink for Sink {
let elem = target.downcast::<Element>() let elem = target.downcast::<Element>()
.expect("tried to get name of non-Element in XML parsing"); .expect("tried to get name of non-Element in XML parsing");
QName { QName {
prefix: elem.prefix().as_ref().map_or(namespace_prefix!(""), |p| Prefix::from(&**p)), prefix: elem.prefix().map_or(namespace_prefix!(""), |p| Prefix::from(&**p)),
namespace_url: elem.namespace().clone(), namespace_url: elem.namespace().clone(),
local: elem.local_name().clone(), local: elem.local_name().clone(),
} }