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.rs91
1 files changed, 45 insertions, 46 deletions
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index c4cc5f51d21..e52cf7755a3 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -82,7 +82,6 @@ impl ops::Deref for ByteString {
#[derive(Clone, Default, MallocSizeOf)]
pub struct USVString(pub String);
-
/// Returns whether `s` is a `token`, as defined by
/// [RFC 2616](http://tools.ietf.org/html/rfc2616#page-17).
pub fn is_token(s: &[u8]) -> bool {
@@ -93,31 +92,14 @@ pub fn is_token(s: &[u8]) -> bool {
// http://tools.ietf.org/html/rfc2616#section-2.2
match x {
0...31 | 127 => false, // CTLs
- 40 |
- 41 |
- 60 |
- 62 |
- 64 |
- 44 |
- 59 |
- 58 |
- 92 |
- 34 |
- 47 |
- 91 |
- 93 |
- 63 |
- 61 |
- 123 |
- 125 |
- 32 => false, // separators
+ 40 | 41 | 60 | 62 | 64 | 44 | 59 | 58 | 92 | 34 | 47 | 91 | 93 | 63 | 61 | 123 |
+ 125 | 32 => false, // separators
x if x > 127 => false, // non-CHARs
_ => true,
}
})
}
-
/// A DOMString.
///
/// This type corresponds to the [`DOMString`](idl) type in WebIDL.
@@ -196,14 +178,16 @@ impl DOMString {
/// 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; }
+ 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();
@@ -231,17 +215,21 @@ impl DOMString {
Done,
Error,
}
- let next_state = |valid: bool, next: State| -> State { if valid { next } else { State::Error } };
+ let next_state = |valid: bool, next: State| -> State {
+ if valid {
+ next
+ } else {
+ State::Error
+ }
+ };
let state = self.chars().fold(State::HourHigh, |state, c| {
match state {
// Step 1 "HH"
- State::HourHigh => {
- match c {
- '0' | '1' => State::HourLow09,
- '2' => State::HourLow03,
- _ => State::Error,
- }
+ State::HourHigh => match c {
+ '0' | '1' => State::HourLow09,
+ '2' => State::HourLow03,
+ _ => State::Error,
},
State::HourLow09 => next_state(c.is_digit(10), State::MinuteColon),
State::HourLow03 => next_state(c.is_digit(4), State::MinuteColon),
@@ -323,15 +311,21 @@ impl DOMString {
/// where date and time are both valid, and the time string must be as short as possible
/// https://html.spec.whatwg.org/multipage/#valid-normalised-local-date-and-time-string
pub fn convert_valid_normalized_local_date_and_time_string(&mut self) -> Result<(), ()> {
- let ((year, month, day), (hour, minute, second)) = parse_local_date_and_time_string(&*self.0)?;
+ let ((year, month, day), (hour, minute, second)) =
+ parse_local_date_and_time_string(&*self.0)?;
if second == 0.0 {
- self.0 = format!("{:04}-{:02}-{:02}T{:02}:{:02}", year, month, day, hour, minute);
+ self.0 = format!(
+ "{:04}-{:02}-{:02}T{:02}:{:02}",
+ year, month, day, hour, minute
+ );
} else {
- self.0 = format!("{:04}-{:02}-{:02}T{:02}:{:02}:{}", year, month, day, hour, minute, second);
+ self.0 = format!(
+ "{:04}-{:02}-{:02}T{:02}:{:02}:{}",
+ year, month, day, hour, minute, second
+ );
}
Ok(())
}
-
}
impl Borrow<str> for DOMString {
@@ -452,7 +446,10 @@ impl<'a> Into<CowRcStr<'a>> for DOMString {
}
impl Extend<char> for DOMString {
- fn extend<I>(&mut self, iterable: I) where I: IntoIterator<Item=char> {
+ fn extend<I>(&mut self, iterable: I)
+ where
+ I: IntoIterator<Item = char>,
+ {
self.0.extend(iterable)
}
}
@@ -541,7 +538,7 @@ fn parse_month_component(value: &str) -> Result<(u32, u32), ()> {
// Step 4, 5
let month_int = month.parse::<u32>().map_err(|_| ())?;
- if month.len() != 2 || month_int > 12 || month_int < 1 {
+ if month.len() != 2 || month_int > 12 || month_int < 1 {
return Err(());
}
@@ -611,12 +608,12 @@ fn parse_time_component(value: &str) -> Result<(u32, u32, f32), ()> {
return Err(());
}
},
- None => {}
+ None => {},
}
second.parse::<f32>().map_err(|_| ())?
},
- None => 0.0
+ None => 0.0,
};
// Step 8
@@ -624,7 +621,7 @@ fn parse_time_component(value: &str) -> Result<(u32, u32, f32), ()> {
}
/// https://html.spec.whatwg.org/multipage/#parse-a-local-date-and-time-string
-fn parse_local_date_and_time_string(value: &str) -> Result<((u32, u32, u32), (u32, u32, f32)), ()> {
+fn parse_local_date_and_time_string(value: &str) -> Result<((u32, u32, u32), (u32, u32, f32)), ()> {
// Step 1, 2, 4
let mut iterator = if value.contains('T') {
value.split('T')
@@ -651,8 +648,8 @@ fn parse_local_date_and_time_string(value: &str) -> Result<((u32, u32, u32), (u
fn max_day_in_month(year_num: u32, month_num: u32) -> Result<u32, ()> {
match month_num {
- 1|3|5|7|8|10|12 => Ok(31),
- 4|6|9|11 => Ok(30),
+ 1 | 3 | 5 | 7 | 8 | 10 | 12 => Ok(31),
+ 4 | 6 | 9 | 11 => Ok(30),
2 => {
if is_leap_year(year_num) {
Ok(29)
@@ -660,7 +657,7 @@ fn max_day_in_month(year_num: u32, month_num: u32) -> Result<u32, ()> {
Ok(28)
}
},
- _ => Err(())
+ _ => Err(()),
}
}
@@ -669,7 +666,7 @@ fn max_week_in_year(year: u32) -> u32 {
match Utc.ymd(year as i32, 1, 1).weekday() {
Weekday::Thu => 53,
Weekday::Wed if is_leap_year(year) => 53,
- _ => 52
+ _ => 52,
}
}
@@ -681,14 +678,16 @@ fn is_leap_year(year: u32) -> bool {
/// https://html.spec.whatwg.org/multipage/#rules-for-parsing-floating-point-number-values
fn parse_floating_point_number(input: &str) -> Result<f64, ()> {
match input.trim().parse::<f64>() {
- Ok(val) if !(
+ Ok(val)
+ if !(
// A valid number is the same as what rust considers to be valid,
// except for +1., NaN, and Infinity.
val.is_infinite() || val.is_nan() || input.ends_with(".") || input.starts_with("+")
- ) => {
+ ) =>
+ {
// TODO(#19773): need consider `min`, `max`, `step`, when they are implemented
Ok(val.round())
- },
- _ => Err(())
+ }
+ _ => Err(()),
}
}