import functools
from threading import Lock
-from .utils import supports_terminal_sequences, write_string
+from .utils import supports_terminal_sequences, write_string
CONTROL_SEQUENCES = {
'DOWN': '\n',
'''
@param f String representation of formatting to apply in the form:
[style] [light] font_color [on [light] bg_color]
- Eg: "red", "bold green on light blue"
+ E.g. "red", "bold green on light blue"
'''
f = f.upper()
tokens = f.strip().split()
raise SyntaxError(f'Invalid format {" ".join(tokens)!r} in {f!r}')
if fg_color or bg_color:
+ text = text.replace(CONTROL_SEQUENCES['RESET'], f'{fg_color}{bg_color}')
return f'{fg_color}{bg_color}{text}{CONTROL_SEQUENCES["RESET"]}'
else:
return text
def print_at_line(self, text, pos):
if self._HAVE_FULLCAP:
self.write(*self._move_cursor(pos), CONTROL_SEQUENCES['ERASE_LINE'], text)
+ return
text = self._add_line_number(text, pos)
textlen = len(text)
*text, CONTROL_SEQUENCES['ERASE_LINE'],
f'{CONTROL_SEQUENCES["UP"]}{CONTROL_SEQUENCES["ERASE_LINE"]}' * self.maximum)
else:
- self.write(*text, ' ' * self._lastlength)
+ self.write('\r', ' ' * self._lastlength, '\r')