aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/htmltableelement.rs7
-rw-r--r--components/style/attr.rs47
-rw-r--r--components/util/str.rs44
3 files changed, 49 insertions, 49 deletions
diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs
index c2a2e31d2b7..94c0b6dc986 100644
--- a/components/script/dom/htmltableelement.rs
+++ b/components/script/dom/htmltableelement.rs
@@ -18,7 +18,8 @@ use dom::node::{Node, document_from_node};
use dom::virtualmethods::VirtualMethods;
use std::cell::Cell;
use string_cache::Atom;
-use util::str::{self, DOMString, LengthOrPercentageOrAuto};
+use style::attr::parse_unsigned_integer;
+use util::str::{DOMString, LengthOrPercentageOrAuto};
#[dom_struct]
pub struct HTMLTableElement {
@@ -176,12 +177,12 @@ impl VirtualMethods for HTMLTableElement {
atom!("border") => {
// According to HTML5 § 14.3.9, invalid values map to 1px.
self.border.set(mutation.new_value(attr).map(|value| {
- str::parse_unsigned_integer(value.chars()).unwrap_or(1)
+ parse_unsigned_integer(value.chars()).unwrap_or(1)
}));
}
atom!("cellspacing") => {
self.cellspacing.set(mutation.new_value(attr).and_then(|value| {
- str::parse_unsigned_integer(value.chars())
+ parse_unsigned_integer(value.chars())
}));
},
_ => {},
diff --git a/components/style/attr.rs b/components/style/attr.rs
index 31b91319ddd..7c85975ee83 100644
--- a/components/style/attr.rs
+++ b/components/style/attr.rs
@@ -5,12 +5,13 @@
use app_units::Au;
use cssparser::{self, Color, RGBA};
use euclid::num::Zero;
+use num::ToPrimitive;
use std::ascii::AsciiExt;
use std::ops::Deref;
use string_cache::{Atom, Namespace};
use url::Url;
-use util::str::{DOMString, LengthOrPercentageOrAuto, WHITESPACE, parse_unsigned_integer, parse_length};
-use util::str::{split_html_space_chars, str_join, parse_integer};
+use util::str::{DOMString, LengthOrPercentageOrAuto, HTML_SPACE_CHARACTERS, WHITESPACE};
+use util::str::{parse_length, read_numbers, split_html_space_chars, str_join};
use values::specified::{Length};
// Duplicated from script::dom::values.
@@ -29,6 +30,48 @@ pub enum AttrValue {
Url(DOMString, Option<Url>),
}
+/// Shared implementation to parse an integer according to
+/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-integers> or
+/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-non-negative-integers>
+fn do_parse_integer<T: Iterator<Item=char>>(input: T) -> Option<i64> {
+ let mut input = input.skip_while(|c| {
+ HTML_SPACE_CHARACTERS.iter().any(|s| s == c)
+ }).peekable();
+
+ let sign = match input.peek() {
+ None => return None,
+ Some(&'-') => {
+ input.next();
+ -1
+ },
+ Some(&'+') => {
+ input.next();
+ 1
+ },
+ Some(_) => 1,
+ };
+
+ let value = read_numbers(input);
+
+ value.and_then(|value| value.checked_mul(sign))
+}
+
+/// Parse an integer according to
+/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-integers>.
+pub fn parse_integer<T: Iterator<Item=char>>(input: T) -> Option<i32> {
+ do_parse_integer(input).and_then(|result| {
+ result.to_i32()
+ })
+}
+
+/// Parse an integer according to
+/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-non-negative-integers>
+pub fn parse_unsigned_integer<T: Iterator<Item=char>>(input: T) -> Option<u32> {
+ do_parse_integer(input).and_then(|result| {
+ result.to_u32()
+ })
+}
+
impl AttrValue {
pub fn from_serialized_tokenlist(tokens: DOMString) -> AttrValue {
let atoms =
diff --git a/components/util/str.rs b/components/util/str.rs
index 6a06b624d14..2ffde43fedf 100644
--- a/components/util/str.rs
+++ b/components/util/str.rs
@@ -4,7 +4,6 @@
use app_units::Au;
use libc::c_char;
-use num_lib::ToPrimitive;
use std::borrow::ToOwned;
use std::convert::AsRef;
use std::ffi::CStr;
@@ -174,49 +173,6 @@ pub fn read_numbers<I: Iterator<Item=char>>(mut iter: Peekable<I>) -> Option<i64
})
}
-
-/// Shared implementation to parse an integer according to
-/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-integers> or
-/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-non-negative-integers>
-fn do_parse_integer<T: Iterator<Item=char>>(input: T) -> Option<i64> {
- let mut input = input.skip_while(|c| {
- HTML_SPACE_CHARACTERS.iter().any(|s| s == c)
- }).peekable();
-
- let sign = match input.peek() {
- None => return None,
- Some(&'-') => {
- input.next();
- -1
- },
- Some(&'+') => {
- input.next();
- 1
- },
- Some(_) => 1,
- };
-
- let value = read_numbers(input);
-
- value.and_then(|value| value.checked_mul(sign))
-}
-
-/// Parse an integer according to
-/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-integers>.
-pub fn parse_integer<T: Iterator<Item=char>>(input: T) -> Option<i32> {
- do_parse_integer(input).and_then(|result| {
- result.to_i32()
- })
-}
-
-/// Parse an integer according to
-/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-non-negative-integers>
-pub fn parse_unsigned_integer<T: Iterator<Item=char>>(input: T) -> Option<u32> {
- do_parse_integer(input).and_then(|result| {
- result.to_u32()
- })
-}
-
#[derive(Clone, Copy, Debug, HeapSizeOf, PartialEq)]
pub enum LengthOrPercentageOrAuto {
Auto,