This commit is contained in:
decoded
2022-02-28 17:09:41 -06:00
parent 14055f1534
commit 65fc15ed28

View File

@@ -794,7 +794,6 @@ class ANSIDecoder:
while len(self.current_line) < self.x: while len(self.current_line) < self.x:
self.current_line.append((self.DEFAULT_ATTR, ' ')) self.current_line.append((self.DEFAULT_ATTR, ' '))
self.current_line.append((self.current_attr, char)) self.current_line.append((self.current_attr, char))
self.x += 1 self.x += 1
if self.x >= self.width: if self.x >= self.width:
self.write_newline() self.write_newline()
@@ -804,7 +803,6 @@ class ANSIDecoder:
self.x = max(x, 0) self.x = max(x, 0)
if y is not None: if y is not None:
self.y = max(y, 0) self.y = max(y, 0)
try: try:
self.current_line = self.buffer[self.y] self.current_line = self.buffer[self.y]
except IndexError: except IndexError:
@@ -825,7 +823,6 @@ class ANSIDecoder:
bright = self.current_attr.bright bright = self.current_attr.bright
if underline is None: if underline is None:
underline = self.current_attr.underline underline = self.current_attr.underline
self.current_attr = self.Attribute(fg=fg, bg=bg, bright=bright, underline=underline) self.current_attr = self.Attribute(fg=fg, bg=bg, bright=bright, underline=underline)
######################################################################################################################### #########################################################################################################################
def write_escape(self, code, params): def write_escape(self, code, params):
@@ -887,7 +884,6 @@ class ANSIDecoder:
else: else:
if self.strict: if self.strict:
raise ANSIDecodeError("Unrecognised parameters to 'K' escape sequence: %r" % params) raise ANSIDecodeError("Unrecognised parameters to 'K' escape sequence: %r" % params)
elif code == 'A': elif code == 'A':
# move cursor up N lines # move cursor up N lines
if not params: if not params:
@@ -896,7 +892,6 @@ class ANSIDecoder:
self.set_cursor(y=(self.y - params[0])) self.set_cursor(y=(self.y - params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'A' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'A' escape sequence, got %d" % len(params))
elif code == 'B': elif code == 'B':
# move cursor down N lines # move cursor down N lines
if not params: if not params:
@@ -905,7 +900,6 @@ class ANSIDecoder:
self.set_cursor(y=(self.y + params[0])) self.set_cursor(y=(self.y + params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'B' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'B' escape sequence, got %d" % len(params))
elif code == 'C': elif code == 'C':
# move cursor right N cols # move cursor right N cols
if not params: if not params:
@@ -914,7 +908,6 @@ class ANSIDecoder:
self.set_cursor(x=(self.x + params[0])) self.set_cursor(x=(self.x + params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'C' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'C' escape sequence, got %d" % len(params))
elif code == 'D': elif code == 'D':
# move cursor left N cols # move cursor left N cols
if not params: if not params:
@@ -923,7 +916,6 @@ class ANSIDecoder:
self.set_cursor(x=(self.x - params[0])) self.set_cursor(x=(self.x - params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'D' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'D' escape sequence, got %d" % len(params))
elif code == 'E': elif code == 'E':
# move cursor to beginning of next line, N lines down # move cursor to beginning of next line, N lines down
if not params: if not params:
@@ -932,7 +924,6 @@ class ANSIDecoder:
self.set_cursor(x=0, y=(self.y + params[0])) self.set_cursor(x=0, y=(self.y + params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'E' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'E' escape sequence, got %d" % len(params))
elif code == 'F': elif code == 'F':
# move cursor to beginning of previous line, N lines up # move cursor to beginning of previous line, N lines up
if not params: if not params:
@@ -941,14 +932,12 @@ class ANSIDecoder:
self.set_cursor(x=0, y=(self.y - params[0])) self.set_cursor(x=0, y=(self.y - params[0]))
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 1 param to 'F' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 0 or 1 param to 'F' escape sequence, got %d" % len(params))
elif code == 'G': elif code == 'G':
# move cursor to column N # move cursor to column N
if len(params) == 1: if len(params) == 1:
self.set_cursor(x=params[0]) self.set_cursor(x=params[0])
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 1 param to 'G' escape sequence, got %d" % len(params)) raise ANSIDecodeError("Expected 1 param to 'G' escape sequence, got %d" % len(params))
elif code == 'H' or code == 'f': elif code == 'H' or code == 'f':
# move cursor to (line, col) # move cursor to (line, col)
if not params: if not params:
@@ -957,27 +946,23 @@ class ANSIDecoder:
self.set_cursor(x=params[1] - 1, y=params[0] - 1) self.set_cursor(x=params[1] - 1, y=params[0] - 1)
elif self.strict: elif self.strict:
raise ANSIDecodeError("Expected 0 or 2 param to '%s' escape sequence, got %d" % (code, len(params))) raise ANSIDecodeError("Expected 0 or 2 param to '%s' escape sequence, got %d" % (code, len(params)))
elif code == 'h': elif code == 'h':
if params == [7]: if params == [7]:
# enable line wrapping # enable line wrapping
pass pass
elif self.strict: elif self.strict:
raise ANSIDecodeError("Unrecognised params to 'h' - got %r" % params) raise ANSIDecodeError("Unrecognised params to 'h' - got %r" % params)
elif code == 's': elif code == 's':
# save cursor position # save cursor position
if params and self.strict: if params and self.strict:
raise ANSIDecodeError("Unrecognised params to 's' - got %r" % params) raise ANSIDecodeError("Unrecognised params to 's' - got %r" % params)
self.saved_x = self.x self.saved_x = self.x
self.saved_y = self.y self.saved_y = self.y
elif code == 'u': elif code == 'u':
# restore cursor position # restore cursor position
if params and self.strict: if params and self.strict:
raise ANSIDecodeError("Unrecognised params to 'u' - got %r" % params) raise ANSIDecodeError("Unrecognised params to 'u' - got %r" % params)
self.set_cursor(x=self.saved_x, y=self.saved_y) self.set_cursor(x=self.saved_x, y=self.saved_y)
else: else:
if self.strict: if self.strict:
raise ANSIDecodeError("Unrecognised escape code: %r" % code) raise ANSIDecodeError("Unrecognised escape code: %r" % code)