diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-06-11 21:37:22 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-06-12 12:21:04 +1000 |
| commit | 3ac00a94895f4d9a8119ef35494fddb9d66436ae (patch) | |
| tree | 05891e2d06bdd87071ec5df904f746494bdf8f7b /src/libextra | |
| parent | 9fff8c6eba287e0ed7cce6014dc58482afe425b0 (diff) | |
| download | rust-3ac00a94895f4d9a8119ef35494fddb9d66436ae.tar.gz rust-3ac00a94895f4d9a8119ef35494fddb9d66436ae.zip | |
std: remove substr & str::count_*, methodise char_len, implement slice_chars.
The confusing mixture of byte index and character count meant that every use of .substr was incorrect; replaced by slice_chars which only uses character indices. The old behaviour of `.substr(start, n)` can be emulated via `.slice_from(start).slice_chars(0, n)`.
Diffstat (limited to 'src/libextra')
| -rw-r--r-- | src/libextra/rope.rs | 24 | ||||
| -rw-r--r-- | src/libextra/terminfo/searcher.rs | 6 |
2 files changed, 15 insertions, 15 deletions
diff --git a/src/libextra/rope.rs b/src/libextra/rope.rs index de549641423..0856c256c5b 100644 --- a/src/libextra/rope.rs +++ b/src/libextra/rope.rs @@ -84,9 +84,9 @@ pub fn of_str(str: @~str) -> Rope { * * # Return value * - * A rope representing the same string as `str.substr(byte_offset, - * byte_len)`. Depending on `byte_len`, this rope may be empty, flat - * or complex. + * A rope representing the same string as `str.slice(byte_offset, + * byte_offset + byte_len)`. Depending on `byte_len`, this rope may + * be empty, flat or complex. * * # Performance note * @@ -588,7 +588,7 @@ pub mod node { * * char_len - The number of chars in the leaf. * * content - Contents of the leaf. * - * Note that we can have `char_len < str::char_len(content)`, if + * Note that we can have `char_len < content.char_len()`, if * this leaf is only a subset of the string. Also note that the * string can be shared between several ropes, e.g. for indexing * purposes. @@ -680,7 +680,7 @@ pub mod node { */ pub fn of_substr(str: @~str, byte_start: uint, byte_len: uint) -> @Node { return of_substr_unsafer(str, byte_start, byte_len, - str::count_chars(*str, byte_start, byte_len)); + str.slice(byte_start, byte_start + byte_len).char_len()); } /** @@ -734,7 +734,7 @@ pub mod node { if i == 0u { first_leaf_char_len } else { hint_max_leaf_char_len }; let chunk_byte_len = - str::count_bytes(*str, offset, chunk_char_len); + str.slice_from(offset).slice_chars(0, chunk_char_len).len(); nodes[i] = @Leaf(Leaf { byte_offset: offset, byte_len: chunk_byte_len, @@ -938,7 +938,7 @@ pub mod node { match (*node) { node::Leaf(x) => { let char_len = - str::count_chars(*x.content, byte_offset, byte_len); + x.content.slice(byte_offset, byte_offset + byte_len).char_len(); return @Leaf(Leaf { byte_offset: byte_offset, byte_len: byte_len, @@ -1002,9 +1002,9 @@ pub mod node { return node; } let byte_offset = - str::count_bytes(*x.content, 0u, char_offset); + x.content.slice_chars(0, char_offset).len(); let byte_len = - str::count_bytes(*x.content, byte_offset, char_len); + x.content.slice_from(byte_offset).slice_chars(0, char_len).len(); return @Leaf(Leaf { byte_offset: byte_offset, byte_len: byte_len, @@ -1312,7 +1312,7 @@ mod tests { let sample = @~"0123456789ABCDE"; let r = of_str(sample); - assert_eq!(char_len(r), str::char_len(*sample)); + assert_eq!(char_len(r), sample.char_len()); assert!(rope_to_string(r) == *sample); } @@ -1328,7 +1328,7 @@ mod tests { } let sample = @copy *buf; let r = of_str(sample); - assert!(char_len(r) == str::char_len(*sample)); + assert_eq!(char_len(r), sample.char_len()); assert!(rope_to_string(r) == *sample); let mut string_iter = 0u; @@ -1374,7 +1374,7 @@ mod tests { } } - assert_eq!(len, str::char_len(*sample)); + assert_eq!(len, sample.char_len()); } #[test] diff --git a/src/libextra/terminfo/searcher.rs b/src/libextra/terminfo/searcher.rs index ecc99f74626..48a3e1e9c69 100644 --- a/src/libextra/terminfo/searcher.rs +++ b/src/libextra/terminfo/searcher.rs @@ -27,7 +27,7 @@ pub fn get_dbpath_for_term(term: &str) -> Option<~path> { let homedir = os::homedir(); let mut dirs_to_search = ~[]; - let first_char = term.substr(0, 1); + let first_char = term.char_at(0); // Find search directory match getenv("TERMINFO") { @@ -57,12 +57,12 @@ pub fn get_dbpath_for_term(term: &str) -> Option<~path> { // Look for the terminal in all of the search directories for dirs_to_search.each |p| { - let newp = ~p.push_many(&[first_char.to_owned(), term.to_owned()]); + let newp = ~p.push_many(&[str::from_char(first_char), term.to_owned()]); if os::path_exists(p) && os::path_exists(newp) { return Some(newp); } // on some installations the dir is named after the hex of the char (e.g. OS X) - let newp = ~p.push_many(&[fmt!("%x", first_char[0] as uint), term.to_owned()]); + let newp = ~p.push_many(&[fmt!("%x", first_char as uint), term.to_owned()]); if os::path_exists(p) && os::path_exists(newp) { return Some(newp); } |
