diff --git a/eris/termstr.py b/eris/termstr.py index dae26a5..17238d1 100644 --- a/eris/termstr.py +++ b/eris/termstr.py @@ -162,6 +162,10 @@ class TermStr(collections.UserString): codes = part[1:end_index].split(";") previous_code = None for index, code in enumerate(codes): + try: + code_int = int(code) + except ValueError: + code_int = None if code in ["", "0", "00"]: # Normal is_bold, is_italic, is_underlined = False, False, False fg_color, bg_color = None, None @@ -171,13 +175,13 @@ class TermStr(collections.UserString): is_italic = True elif code in ["04", "4"]: # underline is_underlined = True - elif 30 <= int(code) <= 37 : # dim fg color + elif code_int and 30 <= code_int <= 37 : # dim fg color fg_color = int(code[1]) - elif 40 <= int(code) <= 47: # dim bg color + elif code_int and 40 <= code_int <= 47: # dim bg color bg_color = int(code[1]) - elif 90 <= int(code) <= 97: # high fg color + elif code_int and 90 <= code_int <= 97: # high fg color fg_color = int(code[1]) + 8 - elif 100 <= int(code) <= 107: # high bg color + elif code_int and 100 <= code_int <= 107: # high bg color bg_color = int(code[2]) + 8 elif code == "5" and previous_code == "38": # simple fg color fg_color = int(codes[index+1]) diff --git a/tests/termstr_test.py b/tests/termstr_test.py index f0c389a..f7e9554 100755 --- a/tests/termstr_test.py +++ b/tests/termstr_test.py @@ -143,6 +143,8 @@ class TermStrTests(unittest.TestCase): self.assertEqual(TermStr.from_term(eris.terminal.ESC + "(B" + eris.terminal.ESC + "[mfoo"), termstr.TermStr("foo")) + self.assertEqual(TermStr.from_term(eris.terminal.ESC + "39;49;00mfoo"), + termstr.TermStr("foo")) if __name__ == "__main__":