aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2015-07-08 05:18:07 +0900
committerCorey Farwell <coreyf@rwell.org>2015-07-08 05:18:07 +0900
commit7159fe749f59931d09cedcffcb3d2ff52432cbcc (patch)
tree5b151f9c95b17e9fcbd7d1066b7c7f467322f7d8 /components
parentc77b5aa8e21a5b18b078c6a8c4eed194800e3901 (diff)
downloadservo-7159fe749f59931d09cedcffcb3d2ff52432cbcc.tar.gz
servo-7159fe749f59931d09cedcffcb3d2ff52432cbcc.zip
Create and utilize utility for joining strs
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/attr.rs8
-rw-r--r--components/script/dom/domtokenlist.rs8
-rw-r--r--components/util/str.rs8
3 files changed, 12 insertions, 12 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs
index a8f4b897f15..782ab3fd884 100644
--- a/components/script/dom/attr.rs
+++ b/components/script/dom/attr.rs
@@ -14,7 +14,7 @@ use dom::window::Window;
use dom::virtualmethods::vtable_for;
use devtools_traits::AttrInfo;
-use util::str::{DOMString, parse_unsigned_integer, split_html_space_chars};
+use util::str::{DOMString, parse_unsigned_integer, split_html_space_chars, str_join};
use string_cache::{Atom, Namespace};
@@ -49,11 +49,7 @@ impl AttrValue {
}
pub fn from_atomic_tokens(atoms: Vec<Atom>) -> AttrValue {
- let tokens = atoms.iter().fold(String::new(), |mut s, atom| {
- if !s.is_empty() { s.push('\x20'); }
- s.push_str(atom);
- s
- });
+ let tokens = str_join(&atoms, "\x20");
AttrValue::TokenList(tokens, atoms)
}
diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs
index f863996e9ca..f7a02cdf572 100644
--- a/components/script/dom/domtokenlist.rs
+++ b/components/script/dom/domtokenlist.rs
@@ -13,7 +13,7 @@ use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::element::{Element, AttributeHandlers};
use dom::node::window_from_node;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS};
+use util::str::{DOMString, HTML_SPACE_CHARACTERS, str_join};
use string_cache::Atom;
use std::borrow::ToOwned;
@@ -158,10 +158,6 @@ impl<'a> DOMTokenListMethods for &'a DOMTokenList {
// https://dom.spec.whatwg.org/#stringification-behavior
fn Stringifier(self) -> DOMString {
let tokenlist = self.element.root().r().get_tokenlist_attribute(&self.local_name);
- tokenlist.iter().fold(String::new(), |mut s, atom| {
- if !s.is_empty() { s.push('\x20'); }
- s.push_str(atom);
- s
- })
+ str_join(&tokenlist, "\x20")
}
}
diff --git a/components/util/str.rs b/components/util/str.rs
index b82f46598b7..fe6127e1106 100644
--- a/components/util/str.rs
+++ b/components/util/str.rs
@@ -327,3 +327,11 @@ impl Deref for LowercaseString {
pub unsafe fn c_str_to_string(s: *const c_char) -> String {
from_utf8(CStr::from_ptr(s).to_bytes()).unwrap().to_owned()
}
+
+pub fn str_join<T: AsRef<str>>(strs: &[T], join: &str) -> String {
+ strs.iter().fold(String::new(), |mut acc, s| {
+ if !acc.is_empty() { acc.push_str(join); }
+ acc.push_str(s.as_ref());
+ acc
+ })
+}