diff options
| author | Jokler <jokler.contact@gmail.com> | 2018-03-13 22:16:19 +0100 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2018-03-13 22:16:19 +0100 |
| commit | 723adb13e4e9701f6b79bd10868a53ad8babfe8f (patch) | |
| tree | b04608081cde95b03794ba09b8cee0c90c96d516 /src/plugins/sed.rs | |
| parent | 8a2180e2d7b73e9299c1e5ef46185558953b9613 (diff) | |
| download | frippy-723adb13e4e9701f6b79bd10868a53ad8babfe8f.tar.gz frippy-723adb13e4e9701f6b79bd10868a53ad8babfe8f.zip | |
Fix escaped slashes in sed replacement texts
Diffstat (limited to 'src/plugins/sed.rs')
| -rw-r--r-- | src/plugins/sed.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/sed.rs b/src/plugins/sed.rs index db47256..6f3d0bd 100644 --- a/src/plugins/sed.rs +++ b/src/plugins/sed.rs @@ -58,8 +58,8 @@ impl Sed { let captures = RE.captures(message).unwrap(); debug!("{:?}", captures); - let first = captures.get(1).unwrap().as_str(); - let second = captures.get(2).unwrap().as_str(); + let first = captures.get(1).unwrap().as_str().replace(r"\/", "/"); + let second = captures.get(2).unwrap().as_str().replace(r"\/", "/"); if let Some(flags) = captures.get(3) { let flags = flags.as_str(); @@ -67,16 +67,17 @@ impl Sed { global_match = flags.contains('g'); case_insens = flags.contains('i'); ign_whitespace = flags.contains('x'); - disable_unicode = !flags.contains('u'); swap_greed = flags.contains('U'); + disable_unicode = !flags.contains('u'); } - let user_re = RegexBuilder::new(&first.replace(r"\/", "/")) + let user_re = RegexBuilder::new(&first) .case_insensitive(case_insens) .ignore_whitespace(ign_whitespace) .unicode(disable_unicode) .swap_greed(swap_greed) - .build().context(ErrorKind::InvalidRegex)?; + .build() + .context(ErrorKind::InvalidRegex)?; let channel_messages = try_lock!(self.channel_messages); let messages = channel_messages.get(channel).ok_or(ErrorKind::NoMessages)?; @@ -84,9 +85,9 @@ impl Sed { for message in messages.iter() { if user_re.is_match(message) { let response = if global_match { - user_re.replace_all(message, second) + user_re.replace_all(message, &second[..]) } else { - user_re.replace(message, second) + user_re.replace(message, &second[..]) }; return Ok(response.to_string()); @@ -113,7 +114,9 @@ impl Plugin for Sed { }; match result { - Err(e) => ExecutionStatus::Err(e.context(FrippyErrorKind::Connection).into()), + Err(e) => { + ExecutionStatus::Err(e.context(FrippyErrorKind::Connection).into()) + } Ok(_) => ExecutionStatus::Done, } } else { |
