aboutsummaryrefslogtreecommitdiff
path: root/src/util/formatting/truncate.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/util/formatting/truncate.rs21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/util/formatting/truncate.rs b/src/util/formatting/truncate.rs
index 80caa23..9528492 100644
--- a/src/util/formatting/truncate.rs
+++ b/src/util/formatting/truncate.rs
@@ -1,3 +1,5 @@
+use unicode_segmentation::UnicodeSegmentation;
+
/// Truncates a string after a certain number of characters.
///
/// Function always tries to truncate on a word boundary.
@@ -6,15 +8,7 @@ pub fn truncate(text: &str, len: usize) -> String {
if text.len() <= len {
return text.to_string();
}
- format!(
- "{}…",
- text[..len]
- .rsplitn(2, " ")
- .collect::<Vec<&str>>()
- .last()
- .copied()
- .expect("This can never happen >inb4 it happens")
- )
+ format!("{}…", text.graphemes(true).take(len).collect::<String>())
}
#[cfg(test)]
@@ -39,7 +33,7 @@ mod tests {
fn test_truncate_with_input_of_greater_length_than_limit() {
let input = "some longer text";
let result = truncate(input, input.len() - 1);
- assert_eq!("some longer…", result)
+ assert_eq!("some longer tex…", result)
}
#[test]
@@ -48,4 +42,11 @@ mod tests {
let result = truncate(input, input.len() - 1);
assert_eq!("somelongertex…", result)
}
+
+ #[test]
+ fn test_truncate_with_unicode() {
+ let input = "short ° text";
+ let result = truncate(input, 7);
+ assert_eq!(result, "short °…")
+ }
}
ogsubject'>add privmsg macroMax Audron-2/+40 2021-06-05fix jb remote urlsMax Audron-4/+4 2021-06-05remove egress gateway configMax Audron-10/+0 2021-06-05update tanka dependenciesMax Audron-8/+8 2021-06-05fix init container nameMax Audron-1/+1 2021-06-05fix tanka dependency pathMax Audron-8/+8 2021-06-05switch to https url for tanka util libMax Audron-2/+2 2021-06-05bump version to 1.0.2Max Audron-2/+2 2021-06-05add tanka ci configurationMax Audron-1/+1 2021-06-05ready tanka deploy for CIMax Audron-32/+69 2021-06-05remove tanka vendoringMax Audron-27651/+0 2021-05-26Release 1.0.1Max Audron-3/+3 2021-05-26fix log breaking once buffer fullMax Audron-2/+33 the log_msg function was poping the newest message and replacing it with the newest message, it should be poping the oldest messages. 2021-05-16add deployment stuffMax Audron-6/+27786 2021-05-15add container buildMax Audron-2/+35