fancy_regex and check for whitespace before pings
This commit is contained in:
parent
df0a66dfb6
commit
aa575af5c4
27
Cargo.lock
generated
27
Cargo.lock
generated
|
@ -68,6 +68,21 @@ version = "0.13.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
|
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit-set"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
|
||||||
|
dependencies = [
|
||||||
|
"bit-vec",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit-vec"
|
||||||
|
version = "0.6.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
|
@ -184,10 +199,10 @@ name = "dircord"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"fancy-regex",
|
||||||
"irc",
|
"irc",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"pulldown-cmark",
|
"pulldown-cmark",
|
||||||
"regex",
|
|
||||||
"serde",
|
"serde",
|
||||||
"serenity",
|
"serenity",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
@ -288,6 +303,16 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fancy-regex"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0678ab2d46fa5195aaf59ad034c083d351377d4af57f3e073c074d0da3e3c766"
|
||||||
|
dependencies = [
|
||||||
|
"bit-set",
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.0.22"
|
version = "1.0.22"
|
||||||
|
|
|
@ -10,9 +10,9 @@ anyhow = "1.0.52"
|
||||||
irc = "0.15"
|
irc = "0.15"
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
regex = "1.5.4"
|
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
pulldown-cmark = "0.9.1"
|
pulldown-cmark = "0.9.1"
|
||||||
|
fancy-regex = "0.10.0"
|
||||||
|
|
||||||
[dependencies.tokio]
|
[dependencies.tokio]
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -24,7 +24,7 @@ use irc::{
|
||||||
proto::Command,
|
proto::Command,
|
||||||
};
|
};
|
||||||
|
|
||||||
use regex::{Captures, Replacer};
|
use fancy_regex::{Captures, Replacer};
|
||||||
|
|
||||||
use pulldown_cmark::Parser;
|
use pulldown_cmark::Parser;
|
||||||
|
|
||||||
|
@ -518,7 +518,7 @@ macro_rules! regex {
|
||||||
($(static $name:ident = $regex:literal;)*) => {
|
($(static $name:ident = $regex:literal;)*) => {
|
||||||
::lazy_static::lazy_static! {
|
::lazy_static::lazy_static! {
|
||||||
$(
|
$(
|
||||||
static ref $name: ::regex::Regex = ::regex::Regex::new($regex).unwrap();
|
static ref $name: ::fancy_regex::Regex = ::fancy_regex::Regex::new($regex).unwrap();
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -559,13 +559,13 @@ fn irc_to_discord_processing(
|
||||||
|
|
||||||
regex! {
|
regex! {
|
||||||
static PING_NICK_1 = r"^([\w+]+)(?::|,)";
|
static PING_NICK_1 = r"^([\w+]+)(?::|,)";
|
||||||
static PING_RE_2 = r"@([\w\S]+)";
|
static PING_RE_2 = r"(?<=\s)@([\w\S]+)";
|
||||||
static CONTROL_CHAR_RE = r"\x1f|\x02|\x12|\x0f|\x16|\x03(?:\d{1,2}(?:,\d{1,2})?)?";
|
static CONTROL_CHAR_RE = r"\x1f|\x02|\x12|\x0f|\x16|\x03(?:\d{1,2}(?:,\d{1,2})?)?";
|
||||||
static WHITESPACE_RE = r"^\s";
|
static WHITESPACE_RE = r"^\s";
|
||||||
static CHANNEL_RE = r"#([A-Za-z-*]+)";
|
static CHANNEL_RE = r"#([A-Za-z-*]+)";
|
||||||
}
|
}
|
||||||
|
|
||||||
if WHITESPACE_RE.is_match(message) && !PING_RE_2.is_match(message) {
|
if WHITESPACE_RE.is_match(message).unwrap() && !PING_RE_2.is_match(message).unwrap() {
|
||||||
return format!("`{}`", message);
|
return format!("`{}`", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -669,7 +669,7 @@ async fn discord_to_irc_processing(
|
||||||
|
|
||||||
// FIXME: the await makes it impossible to use `replace_all`, idk how to fix this
|
// FIXME: the await makes it impossible to use `replace_all`, idk how to fix this
|
||||||
for caps in CHANNEL_RE.captures_iter(&computed.clone()) {
|
for caps in CHANNEL_RE.captures_iter(&computed.clone()) {
|
||||||
let replacement = match ChannelId(caps[1].parse().unwrap()).to_channel(&ctx).await {
|
let replacement = match ChannelId(caps.unwrap()[1].parse().unwrap()).to_channel(&ctx).await {
|
||||||
Ok(Channel::Guild(gc)) => Cow::Owned(format!("#{}", gc.name)),
|
Ok(Channel::Guild(gc)) => Cow::Owned(format!("#{}", gc.name)),
|
||||||
Ok(Channel::Category(cat)) => Cow::Owned(format!("#{}", cat.name)),
|
Ok(Channel::Category(cat)) => Cow::Owned(format!("#{}", cat.name)),
|
||||||
_ => Cow::Borrowed("#deleted-channel"),
|
_ => Cow::Borrowed("#deleted-channel"),
|
||||||
|
|
Loading…
Reference in a new issue