commit 18630367ca955e31fcd514a269c3a65e13180ef8 Author: Sambuddha Basu sambuddhabasu1@gmail.com Date: Sat Jun 25 12:16:22 2016 -0700
Added function for converting ansi to output --- nyx/panel/interpreter.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/nyx/panel/interpreter.py b/nyx/panel/interpreter.py index 85efb02..bc5da76 100644 --- a/nyx/panel/interpreter.py +++ b/nyx/panel/interpreter.py @@ -20,6 +20,19 @@ PROMPT_LINE = [[(PROMPT, GREEN, BOLD), (USAGE_INFO, CYAN, BOLD)]] ANSI_RE = re.compile("\x1b[([0-9;]*)m") ATTRS = {"0": NORMAL, "1": BOLD, "30": BLACK, "31": RED, "32": GREEN, "33": YELLOW, "34": BLUE, "35": MAGENTA, "36": CYAN}
+def ansi_to_output(line, attrs): + ansi_re = ANSI_RE.findall(line) + new_attrs = [] + + if line.find("\x1b[") == 0 and ansi_re: + for attr in ansi_re[0].split(';'): + new_attrs.append(ATTRS[attr]) + attrs = new_attrs + line = ANSI_RE.sub('', line) + + return [(line, ) + tuple(attrs)], attrs + + class InterpreterPanel(panel.Panel): """ Renders the interpreter panel with a prompt providing raw control port @@ -55,14 +68,8 @@ class InterpreterPanel(panel.Panel): PROMPT_LINE.insert(len(PROMPT_LINE) - 1, [(PROMPT, GREEN, BOLD), (user_input)]) attrs = [] for line in response.split('\n'): - new_attrs = [] - ansi_re = ANSI_RE.findall(line) - if line.find("\x1b[") == 0 and ansi_re: - for attr in ansi_re[0].split(';'): - new_attrs.append(ATTRS[attr]) - attrs = new_attrs - line = ANSI_RE.sub('', line) - PROMPT_LINE.insert(len(PROMPT_LINE) - 1, [(line, ) + tuple(attrs)]) + line, attrs = ansi_to_output(line, attrs) + PROMPT_LINE.insert(len(PROMPT_LINE) - 1, line)
if is_done: self._is_input_mode = False
tor-commits@lists.torproject.org