mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Implement string stripping utilities from the Infra spec
This commit is contained in:
parent
c494d25e24
commit
9d60333af9
2 changed files with 26 additions and 0 deletions
|
@ -186,6 +186,29 @@ impl DOMString {
|
||||||
pub fn bytes(&self) -> Bytes {
|
pub fn bytes(&self) -> Bytes {
|
||||||
self.0.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 {
|
impl Borrow<str> for DOMString {
|
||||||
|
|
|
@ -4,11 +4,14 @@
|
||||||
|
|
||||||
#![cfg_attr(feature = "unstable", feature(core_intrinsics))]
|
#![cfg_attr(feature = "unstable", feature(core_intrinsics))]
|
||||||
#![cfg_attr(feature = "unstable", feature(on_unimplemented))]
|
#![cfg_attr(feature = "unstable", feature(on_unimplemented))]
|
||||||
|
#![feature(ascii_ctype)]
|
||||||
#![feature(conservative_impl_trait)]
|
#![feature(conservative_impl_trait)]
|
||||||
#![feature(const_fn)]
|
#![feature(const_fn)]
|
||||||
#![feature(mpsc_select)]
|
#![feature(mpsc_select)]
|
||||||
#![feature(plugin)]
|
#![feature(plugin)]
|
||||||
#![feature(proc_macro)]
|
#![feature(proc_macro)]
|
||||||
|
#![feature(splice)]
|
||||||
|
#![feature(string_retain)]
|
||||||
|
|
||||||
#![deny(unsafe_code)]
|
#![deny(unsafe_code)]
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue