aboutsummaryrefslogtreecommitdiff
path: root/src/util/formatting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/formatting.rs')
-rw-r--r--src/util/formatting.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/util/formatting.rs b/src/util/formatting.rs
new file mode 100644
index 0000000..add3f1b
--- /dev/null
+++ b/src/util/formatting.rs
@@ -0,0 +1,50 @@
+/// Truncates a string after a certain number of characters.
+/// Function always tries to truncate on a word boundary.
+/// Reimplemented from gonzobot.
+pub(crate) 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")
+ )
+}
+
+#[cfg(test)]
+mod tests {
+ use super::truncate;
+
+ #[test]
+ fn test_truncate_with_input_of_lesser_length_than_limit() {
+ let input = "short text";
+ let result = truncate(input, input.len() + 1);
+ assert_eq!(input, result)
+ }
+
+ #[test]
+ fn test_truncate_with_input_of_equal_length_as_limit() {
+ let input = "short text";
+ let result = truncate(input, input.len());
+ assert_eq!(input, result)
+ }
+
+ #[test]
+ 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)
+ }
+
+ #[test]
+ fn test_truncate_with_input_of_greater_length_than_limit_oneword() {
+ let input = "somelongertext";
+ let result = truncate(input, input.len() - 1);
+ assert_eq!("somelongertex…", result)
+ }
+}
imary.nix?id=1e08c23bb432e3527ff9a2ecc498b68c444f3cd5&follow=1'>remove psql ensurePermissionsMax Audron-5/+5 2024-08-12disable k8sMax Audron-5/+0 2024-08-12add catinatorMax Audron-7/+299 2024-08-12update flaresolverrMax Audron-1/+1 2024-08-12update powerdns configMax Audron-5/+5 2024-08-12update garage config to 1.0Max Audron-2/+3 2024-08-12update to nixos 24.05Max Audron-27/+21 2024-07-03add acc serverMax Audron-2/+23 2024-03-29add rtmp and laplaceMax Audron-1/+200 2024-03-29add hydra secretsMax Audron-0/+0 2024-03-29add hydra secretsMax Audron-5/+35 2024-03-19extend postgresql hpa for podman ipsMax Audron-1/+1 2024-03-02update authentikMax Audron-8/+6 2024-03-02setup gitea oidcMax Audron-5/+18 2024-02-28add giteaMax Audron-2/+39 2024-02-28remove gitlab moduleMax Audron-25/+0 2024-02-26update d3fus phone wg pubkeyMarcin Maselko-1/+1 2024-02-26added d3fus nass to wg configMarcin Maselko-0/+9 2024-02-21set minecraft memoryMax Audron-0/+1 2024-02-21add minecraft server and move palworld to games moduleMax Audron-3/+56 2024-02-21set network manually for ns serversMax Audron-0/+51 2024-02-20update nixpkgs-unstableMax Audron-3/+3 2024-02-19update d3fus fritzbox wg portMarcin Maselko-1/+1 2024-02-19add xonotic serverMax Audron-1/+10