Skip to content

Commit

Permalink
refactor: add fast branch if the string is short enough to not be tru…
Browse files Browse the repository at this point in the history
…ncated (#1333)

* refactor: add fast branch if the entire string is definitely not truncated

* update comments
  • Loading branch information
ClementTsang authored Nov 24, 2023
1 parent a93521d commit 94e4573
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 deletions src/utils/gen_util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,21 +101,26 @@ fn grapheme_width(g: &str) -> usize {
fn truncate_str<U: Into<usize>>(content: &str, width: U) -> String {
let width = width.into();

if width > 0 {
if content.len() <= width {
// If the entire string fits in the width, then we just
// need to copy the entire string over.

content.to_owned()
} else if width > 0 {
if content.is_ascii() {
// If the entire string is ASCII, we can use a much simpler approach.
// If the entire string is ASCII, we can use a much simpler approach
// in regards to what we truncate.

if content.len() <= width {
content.to_owned()
} else {
let mut text = String::with_capacity(width);
let (keep, _throw) = content.split_at(width - 1);
text.push_str(keep);
text.push('…');
let mut text = String::with_capacity(width);
let (keep, _throw) = content.split_at(width - 1);
text.push_str(keep);
text.push('…');

text
}
text
} else {
// Otherwise iterate by grapheme and greedily fit as many graphemes
// as width will allow.

let mut text = String::with_capacity(width);
let mut curr_width = 0;
let mut early_break = false;
Expand Down

0 comments on commit 94e4573

Please sign in to comment.