Bridge discord formatting to IRC
This commit is contained in:
parent
4e1e9ce86f
commit
21402aa859
28
Cargo.lock
generated
28
Cargo.lock
generated
|
@ -183,6 +183,7 @@ dependencies = [
|
|||
"anyhow",
|
||||
"irc",
|
||||
"lazy_static",
|
||||
"pulldown-cmark",
|
||||
"regex",
|
||||
"serde",
|
||||
"serenity",
|
||||
|
@ -381,6 +382,15 @@ dependencies = [
|
|||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getopts"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
|
||||
dependencies = [
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.1.16"
|
||||
|
@ -886,6 +896,18 @@ dependencies = [
|
|||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pulldown-cmark"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"getopts",
|
||||
"memchr",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.10"
|
||||
|
@ -1450,6 +1472,12 @@ dependencies = [
|
|||
"tinyvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.2"
|
||||
|
|
|
@ -12,6 +12,7 @@ toml = "0.5"
|
|||
serde = "1.0"
|
||||
regex = "1.5.4"
|
||||
lazy_static = "1.4"
|
||||
pulldown-cmark = "0.9.1"
|
||||
|
||||
[dependencies.tokio]
|
||||
version = "1.15.0"
|
||||
|
|
24
src/main.rs
24
src/main.rs
|
@ -25,6 +25,8 @@ use irc::{
|
|||
use lazy_static::lazy_static;
|
||||
use regex::Regex;
|
||||
|
||||
use pulldown_cmark::Parser;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -156,7 +158,27 @@ impl EventHandler for Handler {
|
|||
}
|
||||
}
|
||||
|
||||
let mut computed = msg.content.clone();
|
||||
let mut computed = String::new();
|
||||
|
||||
{
|
||||
use pulldown_cmark::Event::*;
|
||||
use pulldown_cmark::Tag::*;
|
||||
let parser = Parser::new(&msg.content);
|
||||
|
||||
for event in parser {
|
||||
match event {
|
||||
Text(t) | Html(t) | Code(t) => computed.push_str(&t),
|
||||
End(_) => computed.push('\x0F'),
|
||||
Start(tag) => match tag {
|
||||
Emphasis => computed.push('\x1D'),
|
||||
Strong => computed.push('\x02'),
|
||||
Link(_, dest, _) => computed.push_str(&dest),
|
||||
_ => {}
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for mat in PING_RE_1.find_iter(&msg.content) {
|
||||
let slice = &msg.content[mat.start() + 2..mat.end() - 1];
|
||||
|
|
Loading…
Reference in a new issue