aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/str.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/bindings/str.rs')
-rw-r--r--components/script/dom/bindings/str.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index 60b8d6183be..3667dddf92d 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -185,6 +185,29 @@ impl DOMString {
pub fn bytes(&self) -> Bytes {
self.0.bytes()
}
+
+ /// Removes newline characters according to <https://infra.spec.whatwg.org/#strip-newlines>.
+ pub fn strip_newlines(&mut self) {
+ self.0.retain(|c| c != '\r' && c != '\n');
+ }
+
+ /// Removes leading and trailing ASCII whitespaces according to
+ /// <https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace>.
+ pub fn strip_leading_and_trailing_ascii_whitespace(&mut self) {
+ if self.0.len() == 0 { return; }
+
+ let last_non_whitespace = match self.0.rfind(|ref c| !char::is_ascii_whitespace(c)) {
+ Some(idx) => idx + 1,
+ None => {
+ self.0.clear();
+ return;
+ }
+ };
+ let first_non_whitespace = self.0.find(|ref c| !char::is_ascii_whitespace(c)).unwrap();
+
+ self.0.truncate(last_non_whitespace);
+ let _ = self.0.splice(0..first_non_whitespace, "");
+ }
}
impl Borrow<str> for DOMString {