From f0816d56a71e0e73b5dd4d515559a2598a1664d9 Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Wed, 3 Sep 2003 09:46:06 +0000 Subject: [PATCH] Changed bold and mircColor to use the right ender \x0F. --- src/ircutils.py | 18 +++++++++++++----- test/test_ircutils.py | 22 +++++++++++++++------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/ircutils.py b/src/ircutils.py index 7472f330e..9eea839f2 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -205,7 +205,15 @@ def joinModes(modes): def bold(s): """Returns the string s, bolded.""" - return "\x02%s\x02" % s + return '\x02%s\x0F' % s + +def reverse(s): + """Returns the string s, reverse-videoed.""" + return '\x16%s\x0F' % s + +def underline(s): + """Returns the string s, underlined.""" + return '\x1F%s\x0F' % s mircColors = { None: '', @@ -239,11 +247,11 @@ def mircColor(s, fg=None, bg=None): if fg is None or isinstance(fg, str): fg = mircColors[fg] if bg is None: - return '\x03%s%s\x03' % (fg, s) + return '\x03%s%s\x0F' % (fg, s) else: if isinstance(bg, str): bg = mircColors[bg] - return '\x03%s,%s%s\x03' % (fg, bg, s) + return '\x03%s,%s%s\x0F' % (fg, bg, s) def canonicalColor(s, bg=False, shift=0): h = hash(s) >> shift @@ -258,7 +266,7 @@ def canonicalColor(s, bg=False, shift=0): else: return (fg, None) -_unColorRe = re.compile('\x03(?:\\d+|\\d+,\\d+)?') +_unColorRe = re.compile('(\x0F|\x03(?:\\d+|\\d+,\\d+)?)') def unColor(s): return _unColorRe.sub('', s) @@ -266,7 +274,7 @@ def isValidArgument(s): """Returns if s is strictly a valid argument for an IRC message.""" return '\r' not in s and '\n' not in s and '\x00' not in s -notFunky = string.ascii[32:]+'\x02'+'\x03' +notFunky = string.ascii[32:]+'\x02\x03\x0F\x16\x1F' def safeArgument(s): """If s is unsafe for IRC, returns a safe version.""" if isValidArgument(s) and s.translate(string.ascii, notFunky) == '': diff --git a/test/test_ircutils.py b/test/test_ircutils.py index 919690e8e..cb145f45c 100644 --- a/test/test_ircutils.py +++ b/test/test_ircutils.py @@ -69,20 +69,20 @@ class FunctionsTestCase(unittest.TestCase): def testBold(self): s = ircutils.bold('foo') self.assertEqual(s[0], '\x02') - self.assertEqual(s[-1], '\x02') + self.assertEqual(s[-1], '\x0F') def testMircColor(self): # No colors provided should return the same string s = 'foo' self.assertEqual(s, ircutils.mircColor(s)) # Test positional args - self.assertEqual('\x030foo\x03', ircutils.mircColor(s, 'white')) - self.assertEqual('\x031,2foo\x03',ircutils.mircColor(s,'black','blue')) - self.assertEqual('\x03,3foo\x03', ircutils.mircColor(s, None, 'green')) + self.assertEqual('\x030foo\x0F', ircutils.mircColor(s, 'white')) + self.assertEqual('\x031,2foo\x0F',ircutils.mircColor(s,'black','blue')) + self.assertEqual('\x03,3foo\x0F', ircutils.mircColor(s, None, 'green')) # Test keyword args - self.assertEqual('\x034foo\x03', ircutils.mircColor(s, fg='red')) - self.assertEqual('\x03,5foo\x03', ircutils.mircColor(s, bg='brown')) - self.assertEqual('\x036,7foo\x03', + self.assertEqual('\x034foo\x0F', ircutils.mircColor(s, fg='red')) + self.assertEqual('\x03,5foo\x0F', ircutils.mircColor(s, bg='brown')) + self.assertEqual('\x036,7foo\x0F', ircutils.mircColor(s, bg='orange', fg='purple')) def testMircColors(self): @@ -163,6 +163,14 @@ class FunctionsTestCase(unittest.TestCase): self.assertEqual(ircutils.joinModes(modes), ['+be-l', plusB[1], plusE[1]]) + def testUnColor(self): + self.assertEqual(ircutils.unColor('\x03foo\x03'), 'foo') + self.assertEqual(ircutils.unColor('\x03foo\x0F'), 'foo') + self.assertEqual(ircutils.unColor('\x0312foo\x03'), 'foo') + self.assertEqual(ircutils.unColor('\x0312,14foo\x03'), 'foo') + self.assertEqual(ircutils.unColor('\x0312foo\x0F'), 'foo') + self.assertEqual(ircutils.unColor('\x0312,14foo\x0F'), 'foo') + class IrcDictTestCase(unittest.TestCase): def test(self):