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(" ", " ")