From 8965be4a8ba134f4af96317424515fa9d48269d3 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Thu, 28 Jul 2022 18:32:17 -0500 Subject: [PATCH] Use `ellipse` crate for truncation --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 1 + src/discord_irc.rs | 9 +++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c4d203f..136d946 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -210,6 +210,7 @@ name = "dircord" version = "0.1.0" dependencies = [ "anyhow", + "ellipse", "fancy-regex", "irc", "lazy_static", @@ -222,6 +223,15 @@ dependencies = [ "vergen", ] +[[package]] +name = "ellipse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1835a82a08e5c9393639e7cf99786a65af71f7fa9df7c91a519f2d52e6fa052d" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "encoding" version = "0.2.33" @@ -1617,6 +1627,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" + [[package]] name = "unicode-width" version = "0.1.9" diff --git a/Cargo.toml b/Cargo.toml index 4f16e58..4be9940 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ lazy_static = "1.4.0" pulldown-cmark = "0.9.1" fancy-regex = "0.10.0" tokio-stream = "0.1.9" +ellipse = "0.2.0" [dependencies.tokio] version = "1.20.0" diff --git a/src/discord_irc.rs b/src/discord_irc.rs index 6e82842..fc0234b 100644 --- a/src/discord_irc.rs +++ b/src/discord_irc.rs @@ -1,6 +1,7 @@ use crate::{ regex, ChannelMappingKey, MembersKey, OptionReplacer, OptionStringKey, SenderKey, UserIdKey, }; +use ellipse::Ellipse; use fancy_regex::{Captures, Replacer}; use pulldown_cmark::Parser; use serenity::{ @@ -150,7 +151,7 @@ impl EventHandler for Handler { { if let Ok(mut reply) = channel_id.message(&ctx, message_id).await { reply.guild_id = guild_id; // lmao - let (reply_prefix, reply_content_limit) = create_prefix(&reply, true, &ctx).await; + let (reply_prefix, _) = create_prefix(&reply, true, &ctx).await; let mut content = reply.content; content = content.replace("\r\n", " "); // just in case @@ -160,11 +161,7 @@ impl EventHandler for Handler { content = discord_to_irc_processing(&content, &**members_lock, &ctx, &roles).await; - let to_send = if content.len() > reply_content_limit { - format!("{}...", &content[..reply_content_limit - 3]) - } else { - content - }; + let to_send = (&*content).truncate_ellipse(40); // limit taken from discord sender .send_privmsg(channel, &format!("{}{}", reply_prefix, to_send))