Fix justify m_len call. Fixes #3019

This commit is contained in:
Griatch 2022-12-07 19:34:27 +01:00
parent 4c59a243dc
commit 045a83c6cc
4 changed files with 7 additions and 18 deletions

View File

@ -13,7 +13,7 @@ default:
@echo " make test - run evennia test suite with all default values." @echo " make test - run evennia test suite with all default values."
@echo " make tests=evennia.path test - run only specific test or tests." @echo " make tests=evennia.path test - run only specific test or tests."
@echo " make testp - run test suite using multiple cores." @echo " make testp - run test suite using multiple cores."
@echo " make publish - publish evennia to pypi (requires pypi credentials) @echo " make release - publish evennia to pypi (requires pypi credentials)
install: install:
pip install -e . pip install -e .

View File

@ -273,22 +273,12 @@ from django.conf import settings
# i18n # i18n
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from evennia import CmdSet, Command from evennia import CmdSet, Command
from evennia.commands import cmdhandler from evennia.commands import cmdhandler
from evennia.utils import logger from evennia.utils import logger
from evennia.utils.ansi import strip_ansi from evennia.utils.ansi import strip_ansi
from evennia.utils.evtable import EvColumn, EvTable from evennia.utils.evtable import EvColumn, EvTable
from evennia.utils.utils import ( from evennia.utils.utils import crop, dedent, is_iter, m_len, make_iter, mod_import, pad, to_str
crop,
dedent,
is_iter,
m_len,
make_iter,
mod_import,
pad,
to_str,
)
# read from protocol NAWS later? # read from protocol NAWS later?
_MAX_TEXT_WIDTH = settings.CLIENT_DEFAULT_WIDTH _MAX_TEXT_WIDTH = settings.CLIENT_DEFAULT_WIDTH
@ -1179,6 +1169,7 @@ class EvMenu:
for icol in range(ncols): for icol in range(ncols):
start = icol * split start = icol * split
end = min(start + split, max_end) end = min(start + split, max_end)
print(f"col {icol}:", table[start:end])
cols_list.append(EvColumn(*table[start:end])) cols_list.append(EvColumn(*table[start:end]))
return str(EvTable(table=cols_list, border="none")) return str(EvTable(table=cols_list, border="none"))

View File

@ -118,7 +118,6 @@ from copy import copy, deepcopy
from textwrap import TextWrapper from textwrap import TextWrapper
from django.conf import settings from django.conf import settings
from evennia.utils.ansi import ANSIString from evennia.utils.ansi import ANSIString
from evennia.utils.utils import display_len as d_len from evennia.utils.utils import display_len as d_len
from evennia.utils.utils import is_iter, justify from evennia.utils.utils import is_iter, justify

View File

@ -34,13 +34,12 @@ from django.core.validators import validate_email as django_validate_email
from django.utils import timezone from django.utils import timezone
from django.utils.html import strip_tags from django.utils.html import strip_tags
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from evennia.utils import logger
from simpleeval import simple_eval from simpleeval import simple_eval
from twisted.internet import reactor, threads from twisted.internet import reactor, threads
from twisted.internet.defer import returnValue # noqa - used as import target from twisted.internet.defer import returnValue # noqa - used as import target
from twisted.internet.task import deferLater from twisted.internet.task import deferLater
from evennia.utils import logger
_MULTIMATCH_TEMPLATE = settings.SEARCH_MULTIMATCH_TEMPLATE _MULTIMATCH_TEMPLATE = settings.SEARCH_MULTIMATCH_TEMPLATE
_EVENNIA_DIR = settings.EVENNIA_DIR _EVENNIA_DIR = settings.EVENNIA_DIR
_GAME_DIR = settings.GAME_DIR _GAME_DIR = settings.GAME_DIR
@ -288,8 +287,8 @@ def justify(text, width=None, align="l", indent=0, fillchar=" "):
# absolute mode - just crop or fill to width # absolute mode - just crop or fill to width
abs_lines = [] abs_lines = []
for line in text.split("\n"): for line in text.split("\n"):
nlen = len(line) nlen = m_len(line)
if len(line) < width: if m_len(line) < width:
line += sp * (width - nlen) line += sp * (width - nlen)
else: else:
line = crop(line, width=width, suffix="") line = crop(line, width=width, suffix="")
@ -304,7 +303,7 @@ def justify(text, width=None, align="l", indent=0, fillchar=" "):
for ip, paragraph in enumerate(paragraphs): for ip, paragraph in enumerate(paragraphs):
if ip > 0: if ip > 0:
words.append(("\n", 0)) words.append(("\n", 0))
words.extend((word, len(word)) for word in paragraph.split()) words.extend((word, m_len(word)) for word in paragraph.split())
if not words: if not words:
# Just whitespace! # Just whitespace!