Merge branch 'master' of https://github.com/evennia/evennia into puzzles
This commit is contained in:
commit
e2a6ffe2b5
3 changed files with 31 additions and 6 deletions
|
|
@ -153,6 +153,22 @@ INVALID_FORMCHARS = r"\s\/\|\\\*\_\-\#\<\>\~\^\:\;\.\,"
|
||||||
_ANSI_ESCAPE = re.compile(r"\|\|")
|
_ANSI_ESCAPE = re.compile(r"\|\|")
|
||||||
|
|
||||||
|
|
||||||
|
def _to_rect(lines):
|
||||||
|
"""
|
||||||
|
Forces all lines to be as long as the longest
|
||||||
|
|
||||||
|
Args:
|
||||||
|
lines (list): list of `ANSIString`s
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
(list): list of `ANSIString`s of
|
||||||
|
same length as the longest input line
|
||||||
|
|
||||||
|
"""
|
||||||
|
maxl = max(len(line) for line in lines)
|
||||||
|
return [line + ' ' * (maxl - len(line)) for line in lines]
|
||||||
|
|
||||||
|
|
||||||
def _to_ansi(obj, regexable=False):
|
def _to_ansi(obj, regexable=False):
|
||||||
"convert to ANSIString"
|
"convert to ANSIString"
|
||||||
if isinstance(obj, basestring):
|
if isinstance(obj, basestring):
|
||||||
|
|
@ -184,7 +200,7 @@ class EvForm(object):
|
||||||
filename (str): Path to template file.
|
filename (str): Path to template file.
|
||||||
cells (dict): A dictionary mapping of {id:text}
|
cells (dict): A dictionary mapping of {id:text}
|
||||||
tables (dict): A dictionary mapping of {id:EvTable}.
|
tables (dict): A dictionary mapping of {id:EvTable}.
|
||||||
form (dict): A dictionary of {"CELLCHAR":char,
|
form (dict): A dictionary of {"FORMCHAR":char,
|
||||||
"TABLECHAR":char,
|
"TABLECHAR":char,
|
||||||
"FORM":templatestring}
|
"FORM":templatestring}
|
||||||
if this is given, filename is not read.
|
if this is given, filename is not read.
|
||||||
|
|
@ -408,7 +424,9 @@ class EvForm(object):
|
||||||
self.tablechar = tablechar[0] if len(tablechar) > 1 else tablechar
|
self.tablechar = tablechar[0] if len(tablechar) > 1 else tablechar
|
||||||
|
|
||||||
# split into a list of list of lines. Form can be indexed with form[iy][ix]
|
# split into a list of list of lines. Form can be indexed with form[iy][ix]
|
||||||
self.raw_form = _to_ansi(to_unicode(datadict.get("FORM", "")).split("\n"))
|
raw_form = _to_ansi(to_unicode(datadict.get("FORM", "")).split("\n"))
|
||||||
|
self.raw_form = _to_rect(raw_form)
|
||||||
|
|
||||||
# strip first line
|
# strip first line
|
||||||
self.raw_form = self.raw_form[1:] if self.raw_form else self.raw_form
|
self.raw_form = self.raw_form[1:] if self.raw_form else self.raw_form
|
||||||
|
|
||||||
|
|
@ -440,7 +458,8 @@ def _test():
|
||||||
6: 5,
|
6: 5,
|
||||||
7: 18,
|
7: 18,
|
||||||
8: 10,
|
8: 10,
|
||||||
9: 3})
|
9: 3,
|
||||||
|
"F": "rev 1"})
|
||||||
# create the EvTables
|
# create the EvTables
|
||||||
tableA = EvTable("HP", "MV", "MP",
|
tableA = EvTable("HP", "MV", "MP",
|
||||||
table=[["**"], ["*****"], ["***"]],
|
table=[["**"], ["*****"], ["***"]],
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ Test form
|
||||||
FORMCHAR = "x"
|
FORMCHAR = "x"
|
||||||
TABLECHAR = "c"
|
TABLECHAR = "c"
|
||||||
|
|
||||||
|
|
||||||
FORM = """
|
FORM = """
|
||||||
.------------------------------------------------.
|
.------------------------------------------------.
|
||||||
| |
|
| |
|
||||||
|
|
@ -27,4 +28,6 @@ FORM = """
|
||||||
| ccccccccc | ccccccccccccccccBccccccccccccccccc |
|
| ccccccccc | ccccccccccccccccBccccccccccccccccc |
|
||||||
| | |
|
| | |
|
||||||
-----------`-------------------------------------
|
-----------`-------------------------------------
|
||||||
|
Footer: xxxFxxx
|
||||||
|
info
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class TestEvForm(TestCase):
|
||||||
u'|\n'
|
u'|\n'
|
||||||
u'| \x1b[0m\x1b[1m\x1b[32mBouncer\x1b[0m \x1b[0m |\n'
|
u'| \x1b[0m\x1b[1m\x1b[32mBouncer\x1b[0m \x1b[0m |\n'
|
||||||
u'| |\n'
|
u'| |\n'
|
||||||
u' >----------------------------------------------<\n'
|
u' >----------------------------------------------< \n'
|
||||||
u'| |\n'
|
u'| |\n'
|
||||||
u'| Desc: \x1b[0mA sturdy \x1b[0m \x1b[0m'
|
u'| Desc: \x1b[0mA sturdy \x1b[0m \x1b[0m'
|
||||||
u' STR: \x1b[0m12 \x1b[0m\x1b[0m\x1b[0m\x1b[0m'
|
u' STR: \x1b[0m12 \x1b[0m\x1b[0m\x1b[0m\x1b[0m'
|
||||||
|
|
@ -31,7 +31,7 @@ class TestEvForm(TestCase):
|
||||||
u' LUC: \x1b[0m10 \x1b[0m\x1b[0m\x1b[0m'
|
u' LUC: \x1b[0m10 \x1b[0m\x1b[0m\x1b[0m'
|
||||||
u' MAG: \x1b[0m3 \x1b[0m\x1b[0m\x1b[0m |\n'
|
u' MAG: \x1b[0m3 \x1b[0m\x1b[0m\x1b[0m |\n'
|
||||||
u'| |\n'
|
u'| |\n'
|
||||||
u' >----------.-----------------------------------<\n'
|
u' >----------.-----------------------------------< \n'
|
||||||
u'| | |\n'
|
u'| | |\n'
|
||||||
u'| \x1b[0mHP\x1b[0m|\x1b[0mMV \x1b[0m|\x1b[0mMP\x1b[0m '
|
u'| \x1b[0mHP\x1b[0m|\x1b[0mMV \x1b[0m|\x1b[0mMP\x1b[0m '
|
||||||
u'| \x1b[0mSkill \x1b[0m|\x1b[0mValue \x1b[0m'
|
u'| \x1b[0mSkill \x1b[0m|\x1b[0mValue \x1b[0m'
|
||||||
|
|
@ -47,7 +47,10 @@ class TestEvForm(TestCase):
|
||||||
u'| \x1b[0mSmithing \x1b[0m|\x1b[0m9 \x1b[0m'
|
u'| \x1b[0mSmithing \x1b[0m|\x1b[0m9 \x1b[0m'
|
||||||
u'|\x1b[0m205/900 \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n'
|
u'|\x1b[0m205/900 \x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m\x1b[0m |\n'
|
||||||
u'| | |\n'
|
u'| | |\n'
|
||||||
u' -----------`-------------------------------------\n')
|
u' -----------`-------------------------------------\n'
|
||||||
|
u' Footer: \x1b[0mrev 1 \x1b[0m \n'
|
||||||
|
u' info \n'
|
||||||
|
u' ')
|
||||||
|
|
||||||
def test_ansi_escape(self):
|
def test_ansi_escape(self):
|
||||||
# note that in a msg() call, the result would be the correct |-----,
|
# note that in a msg() call, the result would be the correct |-----,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue