diff options
| author | Matt Brubeck <mbrubeck@limpet.net> | 2011-10-31 07:34:58 -0700 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-10-31 16:15:36 +0100 |
| commit | 80c926c5e253d6db299698cfd4932dbcb61cd1bd (patch) | |
| tree | c85104b6ec87062b4791cb49f3c603e8c639f277 /src/lib | |
| parent | 4739942e7415d89425453d25427c51f96328c52b (diff) | |
Add a char::to_digit function
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/char.rs | 9 | ||||
| -rw-r--r-- | src/lib/int.rs | 6 | ||||
| -rw-r--r-- | src/lib/uint.rs | 6 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/lib/char.rs b/src/lib/char.rs index e91e8697dd8..28345fb19fe 100644 --- a/src/lib/char.rs +++ b/src/lib/char.rs @@ -93,3 +93,12 @@ pure fn is_whitespace(c: char) -> bool { true } else if c == ch_no_break_space { true } else { false } } + +pure fn to_digit(c: char) -> u8 { + alt c { + '0' to '9' { c as u8 - ('0' as u8) } + 'a' to 'z' { c as u8 + 10u8 - ('a' as u8) } + 'A' to 'Z' { c as u8 + 10u8 - ('A' as u8) } + _ { fail; } + } +} diff --git a/src/lib/int.rs b/src/lib/int.rs index 1dae4488b0b..62fb0a7cb63 100644 --- a/src/lib/int.rs +++ b/src/lib/int.rs @@ -112,11 +112,7 @@ fn parse_buf(buf: [u8], radix: uint) -> int { } let n = 0; while true { - let digit = alt buf[i] as char { - '0' to '9' { buf[i] - ('0' as u8) } - 'a' to 'z' { 10u8 + buf[i] - ('a' as u8) } - 'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) } - }; + let digit = char::to_digit(buf[i] as char); if (digit as uint) >= radix { fail; } diff --git a/src/lib/uint.rs b/src/lib/uint.rs index 12e2f65b9e6..5de9bd974e4 100644 --- a/src/lib/uint.rs +++ b/src/lib/uint.rs @@ -100,11 +100,7 @@ fn parse_buf(buf: [u8], radix: uint) -> uint { let power = 1u; let n = 0u; while true { - let digit = alt buf[i] as char { - '0' to '9' { buf[i] - ('0' as u8) } - 'a' to 'z' { 10u8 + buf[i] - ('a' as u8) } - 'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) } - }; + let digit = char::to_digit(buf[i] as char); if (digit as uint) >= radix { fail; } |
