From ecf6852d464388d48ad952bb5af80adad3c81e48 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 23 May 2016 23:56:44 +0200 Subject: [PATCH] Made EvCels auto-close colors rather than bleed over. This is necessary to avoid accidental color clashes in tables that fill the cells to a |-border edge (particularly for EvForm. --- evennia/utils/ansi.py | 2 +- evennia/utils/evform.py | 7 +++---- evennia/utils/evform_test.py | 18 +++++++++--------- evennia/utils/evtable.py | 4 ++-- evennia/utils/tests.py | 5 ++--- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/evennia/utils/ansi.py b/evennia/utils/ansi.py index d8f6054708..383e479794 100644 --- a/evennia/utils/ansi.py +++ b/evennia/utils/ansi.py @@ -76,7 +76,7 @@ class ANSIParser(object): We also allow to escape colour codes by prepending with a \ for xterm256, - an extra { for Merc-style codes + an extra | for Merc-style codes """ def sub_ansi(self, ansimatch): diff --git a/evennia/utils/evform.py b/evennia/utils/evform.py index 57b3a44c21..c2c162f786 100644 --- a/evennia/utils/evform.py +++ b/evennia/utils/evform.py @@ -429,8 +429,8 @@ def _test(): form = EvForm("evennia.utils.evform_test") # add data to each tagged form cell - form.map(cells={1: "{gTom the Bouncer{n", - 2: "{yGriatch{n", + form.map(cells={1: "|gTom the Bouncer", + 2: "|yGriatch", 3: "A sturdy fellow", 4: 12, 5: 10, @@ -450,5 +450,4 @@ def _test(): form.map(tables={"A": tableA, "B": tableB}) # unicode is required since the example contains non-ascii characters - #print(unicode(form)) - return form + return unicode(form) diff --git a/evennia/utils/evform_test.py b/evennia/utils/evform_test.py index d2935341aa..7cdec79590 100644 --- a/evennia/utils/evform_test.py +++ b/evennia/utils/evform_test.py @@ -18,15 +18,15 @@ FORM = """ | xxxxx3xxxxx INT: x6x STA: x7x | | xxxxxxxxxxx LUC: x8x MAG: x9x | | | - >----------------------------------------------< -| | | -| cccccccc | ccccccccccccccccccccccccccccccccccc | -| cccccccc | ccccccccccccccccccccccccccccccccccc | -| cccAcccc | ccccccccccccccccccccccccccccccccccc | -| cccccccc | ccccccccccccccccccccccccccccccccccc | -| cccccccc | cccccccccccccccccBccccccccccccccccc | -| | | - ------------------------------------------------ + >----------.-----------------------------------< +| | | +| ccccccccc | cccccccccccccccccccccccccccccccccc | +| ccccccccc | cccccccccccccccccccccccccccccccccc | +| cccAccccc | cccccccccccccccccccccccccccccccccc | +| ccccccccc | cccccccccccccccccccccccccccccccccc | +| ccccccccc | ccccccccccccccccBccccccccccccccccc | +| | | + -----------`------------------------------------- """ diff --git a/evennia/utils/evtable.py b/evennia/utils/evtable.py index f9fc3a0c11..3ebdf76657 100644 --- a/evennia/utils/evtable.py +++ b/evennia/utils/evtable.py @@ -646,8 +646,8 @@ class EvCell(object): """ - left = self.border_left_char * self.border_left - right = self.border_right_char * self.border_right + left = self.border_left_char * self.border_left + ANSIString('|n') + right = ANSIString('|n') + self.border_right_char * self.border_right cwidth = self.width + self.pad_left + self.pad_right + \ max(0,self.border_left-1) + max(0, self.border_right-1) diff --git a/evennia/utils/tests.py b/evennia/utils/tests.py index 15b38c2641..f6f8a93270 100644 --- a/evennia/utils/tests.py +++ b/evennia/utils/tests.py @@ -350,9 +350,8 @@ from evennia.utils import evform class TestEvForm(TestCase): def test_form(self): self.maxDiff = None - self.assertEqual(unicode(evform._test()), - u'.------------------------------------------------.\n| |\n| Name: \x1b[1m\x1b[32mTom\x1b[1m\x1b[32m \x1b[1m\x1b[32mthe\x1b[1m\x1b[32m \x1b[0m Player: \x1b[1m\x1b[33mGriatch\x1b[0m \x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[0m |\n| \x1b[1m\x1b[32mBouncer\x1b[0m\x1b[0m |\n| |\n >----------------------------------------------<\n| |\n| Desc: A sturdy \x1b[0m STR: 12 \x1b[0m DEX: 10 \x1b[0m |\n| fellow\x1b[0m INT: 5 \x1b[0m STA: 18 \x1b[0m |\n| LUC: 10 MAG: 3 |\n| |\n >----------------------------------------------<\n| | |\n| HP|MV |M\x1b[0m | Skill |Value |Exp \x1b[0m |\n| ~~+~~~+~ | ~~~~~~~~~~~~+~~~~~~~~~~+~~~~~~~~~~~ |\n| **|***\x1b[0m|*\x1b[0m | Shooting |12 |550/1200 \x1b[0m\x1b[0m |\n| |**\x1b[0m |*\x1b[0m | Herbalism |14 |990/1400 \x1b[0m\x1b[0m |\n| | |*\x1b[0m | Smithing |9 |205/900 \x1b[0m |\n| | |\n ------------------------------------------------\n') - + self.assertEqual(evform._test(), + u'.------------------------------------------------.\n| |\n| Name: \x1b[0m\x1b[1m\x1b[32mTom\x1b[1m\x1b[32m \x1b[1m\x1b[32mthe\x1b[1m\x1b[32m \x1b[0m \x1b[0m Player: \x1b[0m\x1b[1m\x1b[33mGriatch \x1b[0m\x1b[0m\x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[1m\x1b[32m\x1b[0m\x1b[0m |\n| \x1b[0m\x1b[1m\x1b[32mBouncer\x1b[0m \x1b[0m |\n| |\n >----------------------------------------------<\n| |\n| Desc: \x1b[0mA sturdy \x1b[0m \x1b[0m STR: \x1b[0m12 \x1b[0m\x1b[0m\x1b[0m\x1b[0m DEX: \x1b[0m10 \x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| \x1b[0mfellow\x1b[0m \x1b[0m INT: \x1b[0m5 \x1b[0m\x1b[0m\x1b[0m\x1b[0m STA: \x1b[0m18 \x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| \x1b[0m \x1b[0m LUC: \x1b[0m10 \x1b[0m\x1b[0m\x1b[0m MAG: \x1b[0m3 \x1b[0m\x1b[0m\x1b[0m |\n| |\n >----------.-----------------------------------<\n| | |\n| \x1b[0mHP\x1b[0m|\x1b[0mMV \x1b[0m|\x1b[0mMP\x1b[0m | \x1b[0mSkill \x1b[0m|\x1b[0mValue \x1b[0m|\x1b[0mExp \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| ~~+~~~+~~ | ~~~~~~~~~~~+~~~~~~~~~~+~~~~~~~~~~~ |\n| \x1b[0m**\x1b[0m|\x1b[0m***\x1b[0m\x1b[0m|\x1b[0m**\x1b[0m\x1b[0m | \x1b[0mShooting \x1b[0m|\x1b[0m12 \x1b[0m|\x1b[0m550/1200 \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| \x1b[0m \x1b[0m|\x1b[0m**\x1b[0m \x1b[0m|\x1b[0m*\x1b[0m \x1b[0m | \x1b[0mHerbalism \x1b[0m|\x1b[0m14 \x1b[0m|\x1b[0m990/1400 \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| \x1b[0m \x1b[0m|\x1b[0m \x1b[0m|\x1b[0m \x1b[0m | \x1b[0mSmithing \x1b[0m|\x1b[0m9 \x1b[0m|\x1b[0m205/900 \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n| | |\n -----------`-------------------------------------\n') def test_ansi_escape(self): # note that in a msg() call, the result would be the correct |-----, # in a print, ansi only gets called once, so ||----- is the result