fix word_wrap; adjust tests for new double wide policy
This commit is contained in:
parent
efb445fbe3
commit
81f2830425
@ -467,32 +467,26 @@ def word_wrap(ln, w):
|
||||
while True:
|
||||
# ln_len considers DOUBLE_WIDTH chars
|
||||
ln_len = 0
|
||||
idx = 0
|
||||
sp = None
|
||||
for idx, ch in enumerate(ln):
|
||||
if ch == ' ':
|
||||
# split point on space if possible
|
||||
sp = idx
|
||||
if ln_len < w:
|
||||
|
||||
ln_len += 1
|
||||
if ch in DOUBLE_WIDE:
|
||||
ln_len += 1
|
||||
if ch in DOUBLE_WIDE:
|
||||
ln_len += 1
|
||||
else:
|
||||
if ln_len == w:
|
||||
if ch in ".,:;":
|
||||
# boundary of allowed width
|
||||
# if one of .,:; is last -> allow one more character
|
||||
# even if only half visible on Mk4
|
||||
# on Q it's OK as (CHARS_W-1) is used as w
|
||||
sp = None
|
||||
idx += 1
|
||||
else:
|
||||
# Q: double wide char was last
|
||||
# put on next line
|
||||
|
||||
if ln_len > w:
|
||||
# if one of .,:; is last -> allow one more character
|
||||
# even if only half visible on Mk4
|
||||
# on Q it's OK as (CHARS_W-1) is used as w
|
||||
if ch in ".,:;":
|
||||
idx += 1
|
||||
sp = None
|
||||
idx -= 1
|
||||
|
||||
break
|
||||
|
||||
else:
|
||||
yield ln
|
||||
return
|
||||
@ -514,7 +508,7 @@ def word_wrap(ln, w):
|
||||
|
||||
# bad-break the line
|
||||
sp = nsp = idx
|
||||
if ln[nsp:nsp+1] == ' ':
|
||||
if ln[sp:nsp+1] == " ":
|
||||
nsp += 1
|
||||
else:
|
||||
# split on found space
|
||||
|
||||
@ -280,13 +280,13 @@ DOUBLE_W = ['⋯', '✔', '✓', '→', '←', '↦', '◉', '◯', '◌', '※'
|
||||
|
||||
@pytest.mark.parametrize('txt, target', [
|
||||
('Disk, press \x0e to share via NFC, \x11 to share', ['Disk, press \x0e to share via NFC,', '\x11 to share']),
|
||||
((KEY_NFC * 17)+".", [KEY_NFC * 17, '.']),
|
||||
((KEY_NFC * 17)+(17*KEY_QR), [KEY_NFC * 17, KEY_QR * 17]),
|
||||
((KEY_NFC * 17)+" "+(17*KEY_QR), [KEY_NFC * 17, KEY_QR * 17]),
|
||||
((KEY_NFC * 17)+".", [KEY_NFC * 16, KEY_NFC + '.']),
|
||||
((KEY_NFC * 17)+(17*KEY_QR), [KEY_NFC * 16, KEY_NFC +(KEY_QR * 15), 2 * KEY_QR]),
|
||||
((KEY_NFC * 17)+" "+(17*KEY_QR), [KEY_NFC * 16, KEY_NFC, KEY_QR * 16, KEY_QR]),
|
||||
((KEY_NFC * 16)+".", [(KEY_NFC * 16)+'.']),
|
||||
(f"Use {KEY_NFC}, or {KEY_F1}, {KEY_F2}, {KEY_F3}, or or or {KEY_F4}", [f"Use {KEY_NFC}, or {KEY_F1}, {KEY_F2}, {KEY_F3}, or or or {KEY_F4}"]),
|
||||
("".join(DOUBLE_W), ["".join(DOUBLE_W[:17]), "".join(DOUBLE_W[17:])]),
|
||||
("".join(6*DOUBLE_W), ["".join(6*DOUBLE_W)[i:i + 17] for i in range(0, len(6*DOUBLE_W), 17)]),
|
||||
(f"Use {KEY_NFC}, or {KEY_F1}, {KEY_F2}, {KEY_F3}, or or or {KEY_F4}", [f"Use {KEY_NFC}, or {KEY_F1}, {KEY_F2}, {KEY_F3}, or or or", f"{KEY_F4}"]),
|
||||
("".join(DOUBLE_W), ["".join(DOUBLE_W[:16]), "".join(DOUBLE_W[16:])]),
|
||||
("".join(6*DOUBLE_W), ["".join(6*DOUBLE_W)[i:i + 16] for i in range(0, len(6*DOUBLE_W), 16)]),
|
||||
])
|
||||
def test_word_wrap_double_wide(only_q1, txt, target, sim_exec):
|
||||
width = 33 # check shared/ux.py CHAR_PER_W
|
||||
|
||||
Loading…
Reference in New Issue
Block a user