From ad5ee00c93043f08626efae8547587b640cf2630 Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Wed, 8 May 2013 23:50:15 +1000 Subject: libstd: convert chained ifs to a match in base64. --- src/libstd/base64.rs | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/base64.rs b/src/libstd/base64.rs index b26296c9aca..85ba2707863 100644 --- a/src/libstd/base64.rs +++ b/src/libstd/base64.rs @@ -156,31 +156,27 @@ impl FromBase64 for ~[u8] { let ch = self[i] as char; n <<= 6u; - if ch >= 'A' && ch <= 'Z' { - n |= (ch as uint) - 0x41u; - } else if ch >= 'a' && ch <= 'z' { - n |= (ch as uint) - 0x47u; - } else if ch >= '0' && ch <= '9' { - n |= (ch as uint) + 0x04u; - } else if ch == '+' { - n |= 0x3Eu; - } else if ch == '/' { - n |= 0x3Fu; - } else if ch == '=' { - match len - i { - 1u => { - r.push(((n >> 16u) & 0xFFu) as u8); - r.push(((n >> 8u ) & 0xFFu) as u8); - return copy r; - } - 2u => { - r.push(((n >> 10u) & 0xFFu) as u8); - return copy r; - } - _ => fail!(~"invalid base64 padding") + match ch { + 'A'..'Z' => n |= (ch as uint) - 0x41, + 'a'..'z' => n |= (ch as uint) - 0x47, + '0'..'9' => n |= (ch as uint) + 0x04, + '+' => n |= 0x3E, + '/' => n |= 0x3F, + '=' => { + match len - i { + 1u => { + r.push(((n >> 16u) & 0xFFu) as u8); + r.push(((n >> 8u ) & 0xFFu) as u8); + return copy r; + } + 2u => { + 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; -- cgit 1.4.1-3-g733a5