[tor-commits] [nyx/master] Added function for converting ansi to output

atagar at torproject.org atagar at torproject.org
Sun Jul 31 23:32:40 UTC 2016


commit 18630367ca955e31fcd514a269c3a65e13180ef8
Author: Sambuddha Basu <sambuddhabasu1 at 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





More information about the tor-commits mailing list