Merge pull request 'Add support for flags' (#11) from karx/uberbot:flags into master
Reviewed-on: lemonsh/uberbot#11
This commit is contained in:
commit
cd98388f57
|
@ -25,6 +25,7 @@ rusqlite = { version = "0.28", features = ["bundled"] }
|
|||
futures-util = "0.3"
|
||||
irc = { version = "0.15", default-features = false, features = ["tls-rust"] }
|
||||
async-trait = "0.1"
|
||||
regex = "1.6.0"
|
||||
|
||||
[features]
|
||||
# debug IRC commands
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
use crate::bot::{Context, Trigger};
|
||||
use async_trait::async_trait;
|
||||
use fancy_regex::escape;
|
||||
use fancy_regex::Captures;
|
||||
use regex::RegexBuilder;
|
||||
|
||||
pub struct Sed;
|
||||
|
||||
|
@ -25,9 +27,22 @@ impl Trigger for Sed {
|
|||
return Ok("No previous messages found.".into());
|
||||
};
|
||||
if let (Some(find), Some(replace)) = (captures.name("r"), captures.name("w")) {
|
||||
// TODO: karx plz add flags
|
||||
//let flags = matches.name("f").map(|m| m.as_str());
|
||||
let result = message.replace(find.as_str(), replace.as_str());
|
||||
let (global, ignore_case) = captures
|
||||
.name("f")
|
||||
.map(|m| m.as_str())
|
||||
.map(|s| (s.contains('g'), s.contains('i')))
|
||||
.unwrap_or_default();
|
||||
|
||||
let escaped = escape(find.as_str());
|
||||
let re = RegexBuilder::new(&escaped)
|
||||
.case_insensitive(ignore_case)
|
||||
.build()
|
||||
.unwrap(); // Of course it's valid, we just escaped special chars
|
||||
let result = if global {
|
||||
re.replace_all(&message, replace.as_str())
|
||||
} else {
|
||||
re.replace(&message, replace.as_str())
|
||||
};
|
||||
if foreign_author {
|
||||
Ok(format!(
|
||||
"(edited by {}) <{}> {}",
|
||||
|
|
Loading…
Reference in a new issue