From 058ac1677adc2d454d74ef3f93cea15a840dab66 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Fri, 21 Jan 2022 10:02:08 -0600 Subject: [PATCH] Fix Discord -> IRC pings --- src/main.rs | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0f5e65e..4566344 100644 --- a/src/main.rs +++ b/src/main.rs @@ -159,11 +159,33 @@ impl EventHandler for Handler { } let mut computed = String::new(); + let mut replaced = msg.content.clone(); + + + for mat in PING_RE_1.find_iter(&msg.content) { + let slice = &msg.content[mat.start() + 2..mat.end() - 1]; + let id = slice.parse::().unwrap(); + if let Some(cached) = id_cache.get(&id) { + replaced = PING_RE_1 + .replace(&replaced, format!("@{}", cached)) + .to_string(); + } + } + + for mat in PING_RE_2.find_iter(&msg.content) { + let slice = &msg.content[mat.start() + 3..mat.end() - 1]; + let id = slice.parse::().unwrap(); + if let Some(cached) = id_cache.get(&id) { + replaced = PING_RE_2 + .replace(&replaced, format!("@{}", cached)) + .to_string(); + } + } { use pulldown_cmark::Event::*; use pulldown_cmark::Tag::*; - let parser = Parser::new(&msg.content); + let parser = Parser::new(&replaced); for event in parser { match event { @@ -180,25 +202,6 @@ impl EventHandler for Handler { } } - for mat in PING_RE_1.find_iter(&msg.content) { - let slice = &msg.content[mat.start() + 2..mat.end() - 1]; - let id = slice.parse::().unwrap(); - if let Some(cached) = id_cache.get(&id) { - computed = PING_RE_1 - .replace(&computed, format!("@{}", cached)) - .to_string(); - } - } - - for mat in PING_RE_2.find_iter(&msg.content) { - let slice = &msg.content[mat.start() + 3..mat.end() - 1]; - let id = slice.parse::().unwrap(); - if let Some(cached) = id_cache.get(&id) { - computed = PING_RE_2 - .replace(&computed, format!("@{}", cached)) - .to_string(); - } - } let chars = computed