Auto merge of #10870 - axitkhurana:do-parse-integer-return-value, r=KiChjang

Return a Result<i64, ()> from do_parse_integer

Fixes #10860

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10870)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-04-26 23:26:29 -07:00
commit 55ea0d1133

View file

@ -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
@ -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