diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/base64.rs | 30 | ||||
| -rw-r--r-- | src/libstd/getopts.rs | 22 | ||||
| -rw-r--r-- | src/libstd/json.rs | 3 | ||||
| -rw-r--r-- | src/libstd/net_ip.rs | 4 | ||||
| -rw-r--r-- | src/libstd/net_url.rs | 4 |
5 files changed, 43 insertions, 20 deletions
diff --git a/src/libstd/base64.rs b/src/libstd/base64.rs index ff026324404..02858de9b34 100644 --- a/src/libstd/base64.rs +++ b/src/libstd/base64.rs @@ -16,12 +16,16 @@ pub trait ToBase64 { fn to_base64(&self) -> ~str; } +static CHARS: [char * 64] = [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' +]; + impl ToBase64 for &'self [u8] { fn to_base64(&self) -> ~str { - let chars = str::chars( - ~"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - ); - let mut s = ~""; unsafe { let len = self.len(); @@ -35,10 +39,10 @@ impl ToBase64 for &'self [u8] { (self[i + 2u] as uint); // This 24-bit number gets separated into four 6-bit numbers. - str::push_char(&mut s, chars[(n >> 18u) & 63u]); - str::push_char(&mut s, chars[(n >> 12u) & 63u]); - str::push_char(&mut s, chars[(n >> 6u) & 63u]); - str::push_char(&mut s, chars[n & 63u]); + str::push_char(&mut s, CHARS[(n >> 18u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 12u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 6u) & 63u]); + str::push_char(&mut s, CHARS[n & 63u]); i += 3u; } @@ -49,17 +53,17 @@ impl ToBase64 for &'self [u8] { 0 => (), 1 => { let n = (self[i] as uint) << 16u; - str::push_char(&mut s, chars[(n >> 18u) & 63u]); - str::push_char(&mut s, chars[(n >> 12u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 18u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 12u) & 63u]); str::push_char(&mut s, '='); str::push_char(&mut s, '='); } 2 => { let n = (self[i] as uint) << 16u | (self[i + 1u] as uint) << 8u; - str::push_char(&mut s, chars[(n >> 18u) & 63u]); - str::push_char(&mut s, chars[(n >> 12u) & 63u]); - str::push_char(&mut s, chars[(n >> 6u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 18u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 12u) & 63u]); + str::push_char(&mut s, CHARS[(n >> 6u) & 63u]); str::push_char(&mut s, '='); } _ => fail!(~"Algebra is broken, please alert the math police") diff --git a/src/libstd/getopts.rs b/src/libstd/getopts.rs index de8a8f34381..ae783fb9b69 100644 --- a/src/libstd/getopts.rs +++ b/src/libstd/getopts.rs @@ -244,7 +244,8 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result { let mut i_arg = None; if cur[1] == '-' as u8 { let tail = str::slice(cur, 2, curlen).to_owned(); - let tail_eq = str::splitn_char(tail, '=', 1); + let mut tail_eq = ~[]; + for str::each_splitn_char(tail, '=', 1) |s| { tail_eq.push(s.to_owned()) } if tail_eq.len() <= 1 { names = ~[Long(tail)]; } else { @@ -601,7 +602,7 @@ pub mod groups { row += match short_name.len() { 0 => ~"", 1 => ~"-" + short_name + " ", - _ => fail!(~"the short name should only be 1 char long"), + _ => fail!(~"the short name should only be 1 ascii char long"), }; // long option @@ -617,6 +618,7 @@ pub mod groups { Maybe => ~"[" + hint + ~"]", }; + // FIXME: #5516 // here we just need to indent the start of the description let rowlen = row.len(); row += if rowlen < 24 { @@ -625,8 +627,22 @@ pub mod groups { desc_sep }; + // Normalize desc to contain words seperated by one space character + let mut desc_normalized_whitespace = ~""; + for str::each_word(desc) |word| { + desc_normalized_whitespace.push_str(word); + desc_normalized_whitespace.push_char(' '); + } + + // FIXME: #5516 + let mut desc_rows = ~[]; + for str::each_split_within(desc_normalized_whitespace, 54) |substr| { + desc_rows.push(substr.to_owned()); + } + + // FIXME: #5516 // wrapped description - row += str::connect(str::split_within(desc, 54), desc_sep); + row += str::connect(desc_rows, desc_sep); row }); diff --git a/src/libstd/json.rs b/src/libstd/json.rs index a9b9b2977cd..f39e406bc00 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -806,7 +806,8 @@ impl serialize::Decoder for Decoder<'self> { } fn read_char(&self) -> char { - let v = str::chars(self.read_owned_str()); + let mut v = ~[]; + for str::each_char(self.read_owned_str()) |c| { v.push(c) } if v.len() != 1 { fail!(~"string must have one character") } v[0] } diff --git a/src/libstd/net_ip.rs b/src/libstd/net_ip.rs index 15593571b43..4d82d35cc32 100644 --- a/src/libstd/net_ip.rs +++ b/src/libstd/net_ip.rs @@ -197,7 +197,9 @@ pub mod v4 { } } pub fn parse_to_ipv4_rep(ip: &str) -> result::Result<Ipv4Rep, ~str> { - let parts = vec::map(str::split_char(ip, '.'), |s| { + let mut parts = ~[]; + for str::each_split_char(ip, '.') |s| { parts.push(s.to_owned()) } + let parts = vec::map(parts, |s| { match uint::from_str(*s) { Some(n) if n <= 255 => n, _ => 256 diff --git a/src/libstd/net_url.rs b/src/libstd/net_url.rs index 21b60584635..9caab11d643 100644 --- a/src/libstd/net_url.rs +++ b/src/libstd/net_url.rs @@ -344,8 +344,8 @@ fn userinfo_to_str(userinfo: &UserInfo) -> ~str { fn query_from_str(rawquery: &str) -> Query { let mut query: Query = ~[]; if str::len(rawquery) != 0 { - for str::split_char(rawquery, '&').each |p| { - let (k, v) = split_char_first(*p, '='); + for str::each_split_char(rawquery, '&') |p| { + let (k, v) = split_char_first(p, '='); // FIXME(#3722): unsafe only because decode_inner does (string) IO unsafe {query.push((decode_component(k), decode_component(v)));} }; |
