about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2013-05-08 23:50:15 +1000
committerHuon Wilson <dbau.pp+github@gmail.com>2013-05-08 23:50:15 +1000
commitad5ee00c93043f08626efae8547587b640cf2630 (patch)
treef7e68bf7fa33129ba5613064f2181e7d8e7fa437 /src/libstd
parentb6f9295654b8bcad0c3cdd0651741082cedd6e75 (diff)
downloadrust-ad5ee00c93043f08626efae8547587b640cf2630.tar.gz
rust-ad5ee00c93043f08626efae8547587b640cf2630.zip
libstd: convert chained ifs to a match in base64.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/base64.rs44
1 files changed, 20 insertions, 24 deletions
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;