Skip to content

Commit

Permalink
Return a Result<i64, ()> from do_parse_integer
Browse files Browse the repository at this point in the history
    Fixes #10860
  • Loading branch information
axitkhurana committed Apr 27, 2016
1 parent 77553ab commit 4a3addb
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions components/style/attr.rs
Expand Up @@ -35,13 +35,13 @@ pub enum AttrValue {
/// 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> {
fn do_parse_integer<T: Iterator<Item=char>>(input: T) -> Result<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,
None => return Err(()),
Some(&'-') => {
input.next();
-1
Expand All @@ -55,23 +55,23 @@ fn do_parse_integer<T: Iterator<Item=char>>(input: T) -> Option<i64> {

let (value, _) = read_numbers(input);

value.and_then(|value| value.checked_mul(sign))
value.and_then(|value| value.checked_mul(sign)).ok_or(())
}

/// 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) -> Result<i32, ()> {
do_parse_integer(input).and_then(|result| {
result.to_i32()
}).ok_or(())
result.to_i32().ok_or(())
})
}

/// 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) -> Result<u32, ()> {
do_parse_integer(input).and_then(|result| {
result.to_u32()
}).ok_or(())
result.to_u32().ok_or(())
})
}

/// Parse a floating-point number according to
Expand Down

0 comments on commit 4a3addb

Please sign in to comment.