Merge pull request #1156 from jacksonmj/italics

Add support for italic formatting
This commit is contained in:
Valentin Lorentz 2015-08-22 09:25:54 +02:00
commit 5501b7cf63
2 changed files with 18 additions and 0 deletions

View File

@ -299,6 +299,10 @@ def bold(s):
"""Returns the string s, bolded.""" """Returns the string s, bolded."""
return '\x02%s\x02' % s return '\x02%s\x02' % s
def italic(s):
"""Returns the string s, italicised."""
return '\x1D%s\x1D' % s
def reverse(s): def reverse(s):
"""Returns the string s, reverse-videoed.""" """Returns the string s, reverse-videoed."""
return '\x16%s\x16' % s return '\x16%s\x16' % s
@ -355,6 +359,10 @@ def stripBold(s):
"""Returns the string s, with bold removed.""" """Returns the string s, with bold removed."""
return s.replace('\x02', '') return s.replace('\x02', '')
def stripItalic(s):
"""Returns the string s, with italics removed."""
return s.replace('\x1d', '')
_stripColorRe = re.compile(r'\x03(?:\d{1,2},\d{1,2}|\d{1,2}|,\d{1,2}|)') _stripColorRe = re.compile(r'\x03(?:\d{1,2},\d{1,2}|\d{1,2}|,\d{1,2}|)')
def stripColor(s): def stripColor(s):
"""Returns the string s, with color removed.""" """Returns the string s, with color removed."""
@ -375,6 +383,7 @@ def stripFormatting(s):
s = stripBold(s) s = stripBold(s)
s = stripReverse(s) s = stripReverse(s)
s = stripUnderline(s) s = stripUnderline(s)
s = stripItalic(s)
return s.replace('\x0f', '').replace('\x0F', '') return s.replace('\x0f', '').replace('\x0F', '')
_containsFormattingRe = re.compile(r'[\x02\x03\x16\x1f]') _containsFormattingRe = re.compile(r'[\x02\x03\x16\x1f]')

View File

@ -92,6 +92,11 @@ class FunctionsTestCase(SupyTestCase):
self.assertEqual(s[0], '\x02') self.assertEqual(s[0], '\x02')
self.assertEqual(s[-1], '\x02') self.assertEqual(s[-1], '\x02')
def testItalic(self):
s = ircutils.italic('foo')
self.assertEqual(s[0], '\x1d')
self.assertEqual(s[-1], '\x1d')
def testUnderline(self): def testUnderline(self):
s = ircutils.underline('foo') s = ircutils.underline('foo')
self.assertEqual(s[0], '\x1f') self.assertEqual(s[0], '\x1f')
@ -126,6 +131,9 @@ class FunctionsTestCase(SupyTestCase):
def testStripBold(self): def testStripBold(self):
self.assertEqual(ircutils.stripBold(ircutils.bold('foo')), 'foo') self.assertEqual(ircutils.stripBold(ircutils.bold('foo')), 'foo')
def testStripItalic(self):
self.assertEqual(ircutils.stripItalic(ircutils.italic('foo')), 'foo')
def testStripColor(self): def testStripColor(self):
self.assertEqual(ircutils.stripColor('\x02bold\x0302,04foo\x03bar\x0f'), self.assertEqual(ircutils.stripColor('\x02bold\x0302,04foo\x03bar\x0f'),
'\x02boldfoobar\x0f') '\x02boldfoobar\x0f')
@ -149,6 +157,7 @@ class FunctionsTestCase(SupyTestCase):
def testStripFormatting(self): def testStripFormatting(self):
self.assertEqual(ircutils.stripFormatting(ircutils.bold('foo')), 'foo') self.assertEqual(ircutils.stripFormatting(ircutils.bold('foo')), 'foo')
self.assertEqual(ircutils.stripFormatting(ircutils.italic('foo')), 'foo')
self.assertEqual(ircutils.stripFormatting(ircutils.reverse('foo')), self.assertEqual(ircutils.stripFormatting(ircutils.reverse('foo')),
'foo') 'foo')
self.assertEqual(ircutils.stripFormatting(ircutils.underline('foo')), self.assertEqual(ircutils.stripFormatting(ircutils.underline('foo')),