diff --git a/evennia/utils/tests/test_text2html.py b/evennia/utils/tests/test_text2html.py index 506c920a1b..e288feb53d 100644 --- a/evennia/utils/tests/test_text2html.py +++ b/evennia/utils/tests/test_text2html.py @@ -2,6 +2,7 @@ from django.test import TestCase from evennia.utils import ansi, text2html +import mock class TestText2Html(TestCase): @@ -90,6 +91,62 @@ class TestText2Html(TestCase): "a  red    foo", parser.re_double_space("a red foo")) + def test_sub_text(self): + parser = text2html.HTML_PARSER + mocked_match = mock.Mock() + mocked_match.groupdict.return_value = { + "htmlchars": "foo" + } + self.assertEqual( + "foo", + parser.sub_text(mocked_match)) + mocked_match.groupdict.return_value = { + "htmlchars": "", + "lineend": "foo", + } + self.assertEqual( + "
", + parser.sub_text(mocked_match)) + mocked_match.groupdict.return_value = { + "htmlchars": "", + "lineend": "", + "firstspace": "foo" + } + self.assertEqual( + "  ", + parser.sub_text(mocked_match)) + parser.tabstop = 2 + mocked_match.groupdict.return_value = { + "htmlchars": "", + "lineend": "", + "firstspace": "", + "space": "\t" + } + self.assertEqual( + "   ", + parser.sub_text(mocked_match)) + mocked_match.groupdict.return_value = { + "htmlchars": "", + "lineend": "", + "firstspace": "", + "space": " ", + "spacestart": " " + } + mocked_match.group.return_value = " \t " + self.assertEqual( + "    ", + parser.sub_text(mocked_match)) + mocked_match.groupdict.return_value = { + "htmlchars": "", + "lineend": "", + "firstspace": "", + "space": "", + "spacestart": "" + } + self.assertEqual( + None, + parser.sub_text(mocked_match)) + def test_parse_html(self): self.assertEqual("foo", text2html.parse_html("foo")) self.maxDiff = None diff --git a/evennia/utils/text2html.py b/evennia/utils/text2html.py index 6d49b6a445..011d6efb34 100644 --- a/evennia/utils/text2html.py +++ b/evennia/utils/text2html.py @@ -310,8 +310,7 @@ class TextToHTMLparser(object): elif cdict["firstspace"]: return "  " elif cdict["space"] == "\t": - text = match.group() - return " " if tabstop == 1 else " " + " " * tabstop + return " " if self.tabstop == 1 else " " + " " * self.tabstop elif cdict["space"] or cdict["spacestart"]: text = match.group().replace("\t", " " * self.tabstop) text = text.replace(" ", " ")