SedRegex: allow free form flags and return them in _unpack_sed()

From: 423da9f996
This commit is contained in:
James Lu 2016-12-17 20:43:19 -08:00
parent c1e2e2b8a6
commit bd0b1158fc

View File

@ -49,7 +49,7 @@ except ImportError:
# lower than 2.7.6: see https://stackoverflow.com/questions/3675144/regex-error-nothing-to-repeat
# and https://bugs.python.org/issue18647
SED_REGEX = re.compile(r"^(?:(?P<nick>.+?)[:,] )?s(?P<delim>[^\w\s])(?P<pattern>.*?)(?P=delim)"
r"(?P<replacement>.*?)(?:(?P=delim)(?P<flags>[gi]{0,2}))?$")
r"(?P<replacement>.*?)(?:(?P=delim)(?P<flags>[a-z]+))?$")
# Replace newlines and friends with things like literal "\n" (backslash and "n")
axe_spaces = utils.str.MultipleReplacer({'\n': '\\n', '\t': '\\t', '\r': '\\r'})
@ -101,7 +101,7 @@ class SedRegex(callbacks.PluginRegexp):
pattern = re.compile(pattern, flags)
return (pattern, replacement, count)
return (pattern, replacement, count, raw_flags)
def replacer(self, irc, msg, regex):
if not self.registryValue('enable', msg.args[0]):
@ -110,7 +110,7 @@ class SedRegex(callbacks.PluginRegexp):
msg.tag('Replacer')
try:
(pattern, replacement, count) = self._unpack_sed(msg.args[1])
(pattern, replacement, count, flags) = self._unpack_sed(msg.args[1])
except (ValueError, re.error) as e:
self.log.warning(_("SedRegex error: %s"), e)
if self.registryValue('displayErrors', msg.args[0]):