aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2019-09-08 11:18:08 +0100
committerGravatar jesopo2019-09-08 11:18:08 +0100
commit9e0934a47e63a2e0c0e5c980792e7b4e7af29a2c (patch)
tree453b4072e8bd9cbc43d11e944852539c7ef0b79b
parentaccept "," as well as ":" as a sed target marker (diff)
signature
support sed ampersand syntax
-rw-r--r--modules/sed.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/modules/sed.py b/modules/sed.py
index 483eea5a..23c06e76 100644
--- a/modules/sed.py
+++ b/modules/sed.py
@@ -6,6 +6,7 @@ from src import ModuleManager, utils
REGEX_SPLIT = re.compile("(?<!\\\\)/")
REGEX_SED = re.compile("^(?:(\\S+)[:,] )?s/")
+SED_AMPERSAND = re.compile(r"((?:^|[^\\])(?:\\\\)*)&")
@utils.export("channelset",
utils.BoolSetting("sed","Disable/Enable sed in a channel"))
@@ -50,7 +51,6 @@ class Module(ModuleManager.BaseModule):
traceback.print_exc()
event["stderr"].write("Invalid regex in pattern")
return
- replace = utils.irc.bold(sed_split[2].replace("\\/", "/"))
for_user = event["match"].group(1)
if self._closest_setting(event, "sed-sender-only", False):
@@ -61,6 +61,11 @@ class Module(ModuleManager.BaseModule):
for_user=for_user, not_pattern=REGEX_SED)
if match:
+ replace = sed_split[2]
+ replace = replace.replace("\\/", "/")
+ replace = re.sub(SED_AMPERSAND, match.match, replace)
+ replace = utils.irc.bold(replace)
+
new_message = re.sub(pattern, replace, match.line.message,
count)
if match.line.action: