Fix #2062 : Console discards text before first colour string
This commit is contained in:
parent
483c439e38
commit
d08ea7da81
|
@ -165,26 +165,25 @@ class Screen(CursesStdIO):
|
||||||
Returns a list of 2-tuples (color string, text)
|
Returns a list of 2-tuples (color string, text)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if not line or line.count("{!") != line.count("!}"):
|
||||||
|
return []
|
||||||
|
|
||||||
chunks = []
|
chunks = []
|
||||||
num_chunks = line.count("{!")
|
if not line.startswith('{!'):
|
||||||
for i in range(num_chunks):
|
begin = line.find('{!')
|
||||||
# Find the beginning and end of the color tag
|
if begin == -1:
|
||||||
beg = line.find("{!")
|
begin = len(line)
|
||||||
end = line.find("!}") + 2
|
chunks.append( ('', line[:begin]) )
|
||||||
color = line[beg:end]
|
line = line[begin:]
|
||||||
line = line[end:]
|
|
||||||
|
|
||||||
# Check to see if this is the last chunk
|
|
||||||
if i + 1 == num_chunks:
|
|
||||||
text = line
|
|
||||||
else:
|
|
||||||
# Not the last chunk so get the text up to the next tag
|
|
||||||
# and remove the text from line
|
|
||||||
text = line[:line.find("{!")]
|
|
||||||
line = line[line.find("{!"):]
|
|
||||||
|
|
||||||
chunks.append((color, text))
|
|
||||||
|
|
||||||
|
while line:
|
||||||
|
# We know the line starts with '{!' here
|
||||||
|
end_color = line.find('!}')
|
||||||
|
next_color = line.find('{!', end_color)
|
||||||
|
if next_color == -1:
|
||||||
|
next_color = len(line)
|
||||||
|
chunks.append( (line[:end_color+2], line[end_color+2:next_color]) )
|
||||||
|
line = line[next_color:]
|
||||||
return chunks
|
return chunks
|
||||||
|
|
||||||
for line in text.splitlines():
|
for line in text.splitlines():
|
||||||
|
@ -192,8 +191,8 @@ class Screen(CursesStdIO):
|
||||||
try:
|
try:
|
||||||
line_length = colors.get_line_length(line)
|
line_length = colors.get_line_length(line)
|
||||||
except colors.BadColorString:
|
except colors.BadColorString:
|
||||||
log.error("Passed a bad colored string..")
|
log.error("Passed a bad colored line: %s", line)
|
||||||
line_length = len(line)
|
continue
|
||||||
|
|
||||||
if line_length >= (self.cols - 1):
|
if line_length >= (self.cols - 1):
|
||||||
s = ""
|
s = ""
|
||||||
|
|
Loading…
Reference in New Issue