From f943d63098a50746f4e470e403a991a4d9713030 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 29 Mar 2016 12:56:58 +0100 Subject: first commit. --- modules/sed.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 modules/sed.py (limited to 'modules/sed.py') diff --git a/modules/sed.py b/modules/sed.py new file mode 100644 index 00000000..6bdd1cb0 --- /dev/null +++ b/modules/sed.py @@ -0,0 +1,64 @@ +import re, traceback + +REGEX_SPLIT = re.compile("(? 2: + regex_flags = 0 + flags = (sed_split[3:] or [""])[0] + count = None + + last_flag = "" + for flag in flags: + if flag.isdigit(): + if last_flag.isdigit(): + count = int(str(count) + flag) + elif not count: + count = int(flag) + elif flag == "i": + regex_flags |= re.I + elif flag == "g": + count = 0 + last_flag = flag + if count == None: + count = 1 + + try: + pattern = re.compile(sed_split[1], regex_flags) + except: + traceback.print_exc() + self.bot.events.on("send").on("stderr").call(target=event[ + "channel"], module_name="Sed", server=event["server"], + message="Invalid regex in pattern") + return + replace = sed_split[2].replace("\\/", "/") + + line = event["channel"].log.find(pattern, from_self=False, not_pattern=REGEX_SED) + if line: + new_message = re.sub(pattern, replace, line.message, count) + if line.action: + prefix = "* %s" % line.sender + else: + prefix = "<%s>" % line.sender + self.bot.events.on("send").on("stdout").call(target=event[ + "channel"], module_name="Sed", server=event["server"], + message="%s %s" % (prefix, new_message)) -- cgit v1.3.1-10-gc9f91