diff --git a/src/discord_irc.rs b/src/discord_irc.rs index b008988..bf2d300 100644 --- a/src/discord_irc.rs +++ b/src/discord_irc.rs @@ -1,6 +1,5 @@ use crate::{ - regex, ChannelMappingKey, MembersKey, OptionReplacer, OptionStringKey, SenderKey, StrChunks, - UserIdKey, + regex, ChannelMappingKey, MembersKey, OptionReplacer, OptionStringKey, SenderKey, UserIdKey, }; use fancy_regex::{Captures, Replacer}; use pulldown_cmark::Parser; @@ -18,6 +17,47 @@ use serenity::{ use std::borrow::Cow; use std::collections::HashMap; +struct StrChunks<'a> { + v: &'a str, + size: usize, +} + +impl<'a> Iterator for StrChunks<'a> { + type Item = &'a str; + + fn next(&mut self) -> Option { + if self.v.is_empty() { + return None; + } + if self.v.len() < self.size { + let res = self.v; + self.v = &self.v[self.v.len()..]; + return Some(res); + } + + let mut offset = self.size; + + let res = loop { + match self.v.get(..offset) { + Some(v) => break v, + None => { + offset -= 1; + } + } + }; + + self.v = &self.v[self.v.len()..]; + + Some(res) + } +} + +impl<'a> StrChunks<'a> { + fn new(v: &'a str, size: usize) -> Self { + Self { v, size } + } +} + async fn create_prefix(msg: &Message, is_reply: bool, http: impl CacheHttp) -> (String, usize) { let nick = match msg.member(http).await { Ok(Member { diff --git a/src/main.rs b/src/main.rs index dc80b7f..c916b33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,47 +38,6 @@ struct DircordConfig { webhooks: Option>, } -pub(crate) struct StrChunks<'a> { - v: &'a str, - size: usize, -} - -impl<'a> Iterator for StrChunks<'a> { - type Item = &'a str; - - fn next(&mut self) -> Option { - if self.v.is_empty() { - return None; - } - if self.v.len() < self.size { - let res = self.v; - self.v = &self.v[self.v.len()..]; - return Some(res); - } - - let mut offset = self.size; - - let res = loop { - match self.v.get(..offset) { - Some(v) => break v, - None => { - offset -= 1; - } - } - }; - - self.v = &self.v[self.v.len()..]; - - Some(res) - } -} - -impl<'a> StrChunks<'a> { - fn new(v: &'a str, size: usize) -> Self { - Self { v, size } - } -} - macro_rules! type_map_key { ($($name:ident => $value:ty),* $(,)?) => { $(