Skip to content

Commit 9db1b0c

Browse files
mbrubeckmarijnh
authored andcommitted
---
yaml --- r: 6055 b: refs/heads/master c: 80c926c h: refs/heads/master i: 6053: 716bad2 6051: 7ccd240 6047: c082c23 v: v3
1 parent 51f9cb7 commit 9db1b0c

File tree

6 files changed

+41
-11
lines changed

6 files changed

+41
-11
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 4739942e7415d89425453d25427c51f96328c52b
2+
refs/heads/master: 80c926c5e253d6db299698cfd4932dbcb61cd1bd

trunk/src/lib/char.rs

+9
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,12 @@ pure fn is_whitespace(c: char) -> bool {
9393
true
9494
} else if c == ch_no_break_space { true } else { false }
9595
}
96+
97+
pure fn to_digit(c: char) -> u8 {
98+
alt c {
99+
'0' to '9' { c as u8 - ('0' as u8) }
100+
'a' to 'z' { c as u8 + 10u8 - ('a' as u8) }
101+
'A' to 'Z' { c as u8 + 10u8 - ('A' as u8) }
102+
_ { fail; }
103+
}
104+
}

trunk/src/lib/int.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,7 @@ fn parse_buf(buf: [u8], radix: uint) -> int {
112112
}
113113
let n = 0;
114114
while true {
115-
let digit = alt buf[i] as char {
116-
'0' to '9' { buf[i] - ('0' as u8) }
117-
'a' to 'z' { 10u8 + buf[i] - ('a' as u8) }
118-
'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) }
119-
};
115+
let digit = char::to_digit(buf[i] as char);
120116
if (digit as uint) >= radix {
121117
fail;
122118
}

trunk/src/lib/uint.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,7 @@ fn parse_buf(buf: [u8], radix: uint) -> uint {
100100
let power = 1u;
101101
let n = 0u;
102102
while true {
103-
let digit = alt buf[i] as char {
104-
'0' to '9' { buf[i] - ('0' as u8) }
105-
'a' to 'z' { 10u8 + buf[i] - ('a' as u8) }
106-
'A' to 'Z' { 10u8 + buf[i] - ('A' as u8) }
107-
};
103+
let digit = char::to_digit(buf[i] as char);
108104
if (digit as uint) >= radix {
109105
fail;
110106
}

trunk/src/test/stdtest/char.rs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use std;
2+
import std::char;
3+
4+
#[test]
5+
fn test_is_whitespace() {
6+
assert char::is_whitespace(' ');
7+
assert char::is_whitespace('\u2007');
8+
assert char::is_whitespace('\t');
9+
assert char::is_whitespace('\n');
10+
11+
assert !char::is_whitespace('a');
12+
assert !char::is_whitespace('_');
13+
assert !char::is_whitespace('\u0000');
14+
}
15+
16+
#[test]
17+
fn test_to_digit() {
18+
assert (char::to_digit('0') == 0u8);
19+
assert (char::to_digit('1') == 1u8);
20+
assert (char::to_digit('2') == 2u8);
21+
assert (char::to_digit('9') == 9u8);
22+
assert (char::to_digit('a') == 10u8);
23+
assert (char::to_digit('A') == 10u8);
24+
assert (char::to_digit('b') == 11u8);
25+
assert (char::to_digit('B') == 11u8);
26+
assert (char::to_digit('z') == 35u8);
27+
assert (char::to_digit('Z') == 35u8);
28+
}

trunk/src/test/stdtest/stdtest.rc

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std;
22

33
mod bitv;
44
mod box;
5+
mod char;
56
mod comm;
67
mod deque;
78
mod either;

0 commit comments

Comments
 (0)