Skip to content

Commit 90e517b

Browse files
committed
split and hyphenate words that are too long for single line
1 parent f777571 commit 90e517b

File tree

1 file changed

+39
-11
lines changed

1 file changed

+39
-11
lines changed

adafruit_display_text/__init__.py

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,46 @@ def measure(s):
2727
# TODO: split words that are larger than max_width
2828
wwidth = measure(word)
2929
print("{} - {}".format(word, wwidth))
30-
if firstword:
31-
partial.append(word)
32-
firstword = False
33-
width += wwidth
34-
elif width + swidth + wwidth < max_width:
35-
partial.append(" ")
36-
partial.append(word)
37-
width += wwidth + swidth
30+
part_width = 0
31+
word_parts = []
32+
cur_part = ""
33+
if wwidth > max_width:
34+
if partial:
35+
lines.append("".join(partial))
36+
partial = []
37+
for char in word:
38+
#print(measure(cur_part) + measure(char) + measure("-"))
39+
if measure(cur_part) + measure(char) + measure("-") > max_width:
40+
word_parts.append(cur_part + "-")
41+
cur_part = char
42+
else:
43+
cur_part += char
44+
if cur_part:
45+
word_parts.append(cur_part)
46+
#print(word_parts)
47+
for line in word_parts[:-1]:
48+
lines.append(line)
49+
partial.append(word_parts[-1])
50+
width = measure(word_parts[-1])
51+
if firstword:
52+
firstword = False
53+
print("cur_width after splitword: {}".format(width))
54+
3855
else:
39-
lines.append("".join(partial))
40-
partial = [indent1, word]
41-
width = measure(indent1) + wwidth + swidth
56+
57+
if firstword:
58+
partial.append(word)
59+
firstword = False
60+
width += wwidth
61+
elif width + swidth + wwidth < max_width:
62+
partial.append(" ")
63+
partial.append(word)
64+
width += wwidth + swidth
65+
else:
66+
lines.append("".join(partial))
67+
partial = [indent1, word]
68+
width = measure(indent1) + wwidth
69+
print("cur_width: {}".format(width))
4270
if partial:
4371
lines.append("".join(partial))
4472
return "\n".join(lines)

0 commit comments

Comments
 (0)