Skip to content

Commit f1fed7b

Browse files
committedNov 14, 2019
colors: bug fix on new colorizing markup, and tests
1 parent 6b8a08b commit f1fed7b

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed
 

‎easypy/colors.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ def __new__(cls, text):
135135
continue
136136
match = RE_PARSE_COLOR_MARKUP.match(part)
137137
if match:
138-
stl, part1, part2 = match.groups()
138+
stl, *parts = match.groups()
139139
stl = stl.strip("_")
140-
part = part1 or part2 or ""
140+
part = next(filter(None, parts))
141141
for l in part.splitlines():
142142
self.tokens.append(self.ColoredToken(l, stl))
143143
self.tokens.append(self.Token("\n"))
@@ -323,7 +323,7 @@ def uncolored(text, ansi=True, markup=True):
323323
if ansi:
324324
text = re.sub(re.escape(ANSI_BEGIN) + '.+?m', "", text)
325325
if markup:
326-
text = RE_PARSE_COLOR_MARKUP.sub(lambda m: m.group(2) or m.group(3), text)
326+
text = RE_PARSE_COLOR_MARKUP.sub(lambda m: next(filter(None, m.groups()[1:])), text)
327327
return text
328328

329329

‎tests/test_colors.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
def test_colors():
2+
from easypy.colors import Colorized, uncolored, colorize, register_colorizers
3+
4+
register_colorizers(bad=("red", "blue"))
5+
6+
opts = {
7+
str(Colorized("RED(BLUE)<<XXX>>")),
8+
str(Colorized("RED(BLUE)@[XXX]@")),
9+
str(Colorized("RED(BLUE)@{XXX}@")),
10+
11+
str(colorize("RED(BLUE)<<XXX>>")),
12+
str(colorize("RED(BLUE)@[XXX]@")),
13+
str(colorize("RED(BLUE)@{XXX}@")),
14+
15+
str(colorize("BAD<<XXX>>")),
16+
str(colorize("BAD@[XXX]@")),
17+
str(colorize("BAD@{XXX}@")),
18+
}
19+
20+
assert len(opts) == 1
21+
[ret] = opts
22+
23+
assert ret == "\x1b[1;44;31mXXX\x1b[0m"
24+
assert uncolored(ret) == "XXX"

0 commit comments

Comments
 (0)