diff --git a/plugins/Lookup.py b/plugins/Lookup.py index 529b22c24..e421a9c80 100644 --- a/plugins/Lookup.py +++ b/plugins/Lookup.py @@ -38,6 +38,7 @@ __revision__ = "$Id$" import plugins import os +import re import sys import sqlite @@ -110,6 +111,7 @@ class Lookup(callbacks.Privmsg): except sqlite.DatabaseError: irc.error(msg, 'No such lookup exists.') + _splitRe = re.compile(r'(? @@ -145,7 +147,8 @@ class Lookup(callbacks.Privmsg): if not line or line.startswith('#'): continue try: - (key, value) = line.split(':', 1) + (key, value) = self._splitRe.split(line, 1) + key = key.replace('\\:', ':') except ValueError: irc.error(msg, 'Invalid line in %s: %r' % (filename, line)) return diff --git a/test/test_Lookup.py b/test/test_Lookup.py index 57bccaf82..1c3a01077 100644 --- a/test/test_Lookup.py +++ b/test/test_Lookup.py @@ -47,6 +47,7 @@ if sqlite: 'foo': 'bar', 'bar': 'baz', 'your mom': 'my mom', + 'foo\\:bar': 'baz', } def setUp(self): PluginTestCase.setUp(self) @@ -62,6 +63,7 @@ if sqlite: self.assertResponse('test bar', 'baz') self.assertResponse('test your mom', 'my mom') self.assertError('test something not in there') + self.assertResponse('test foo:bar', 'baz') self.assertNotError('lookup remove test') try: original = conf.replyWhenNotCommand