libstd: convert chained ifs to a match in base64.
This commit is contained in:
@@ -156,31 +156,27 @@ impl FromBase64 for ~[u8] {
|
|||||||
let ch = self[i] as char;
|
let ch = self[i] as char;
|
||||||
n <<= 6u;
|
n <<= 6u;
|
||||||
|
|
||||||
if ch >= 'A' && ch <= 'Z' {
|
match ch {
|
||||||
n |= (ch as uint) - 0x41u;
|
'A'..'Z' => n |= (ch as uint) - 0x41,
|
||||||
} else if ch >= 'a' && ch <= 'z' {
|
'a'..'z' => n |= (ch as uint) - 0x47,
|
||||||
n |= (ch as uint) - 0x47u;
|
'0'..'9' => n |= (ch as uint) + 0x04,
|
||||||
} else if ch >= '0' && ch <= '9' {
|
'+' => n |= 0x3E,
|
||||||
n |= (ch as uint) + 0x04u;
|
'/' => n |= 0x3F,
|
||||||
} else if ch == '+' {
|
'=' => {
|
||||||
n |= 0x3Eu;
|
match len - i {
|
||||||
} else if ch == '/' {
|
1u => {
|
||||||
n |= 0x3Fu;
|
r.push(((n >> 16u) & 0xFFu) as u8);
|
||||||
} else if ch == '=' {
|
r.push(((n >> 8u ) & 0xFFu) as u8);
|
||||||
match len - i {
|
return copy r;
|
||||||
1u => {
|
}
|
||||||
r.push(((n >> 16u) & 0xFFu) as u8);
|
2u => {
|
||||||
r.push(((n >> 8u ) & 0xFFu) as u8);
|
r.push(((n >> 10u) & 0xFFu) as u8);
|
||||||
return copy r;
|
return copy r;
|
||||||
}
|
}
|
||||||
2u => {
|
_ => fail!(~"invalid base64 padding")
|
||||||
r.push(((n >> 10u) & 0xFFu) as u8);
|
}
|
||||||
return copy r;
|
|
||||||
}
|
|
||||||
_ => fail!(~"invalid base64 padding")
|
|
||||||
}
|
}
|
||||||
} else {
|
_ => fail!(~"invalid base64 character")
|
||||||
fail!(~"invalid base64 character");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i += 1u;
|
i += 1u;
|
||||||
|
|||||||
Reference in New Issue
Block a user