summaryrefslogtreecommitdiffstats
path: root/lldb/third_party/Python/module/pexpect-2.4/ANSI.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/third_party/Python/module/pexpect-2.4/ANSI.py')
-rw-r--r--lldb/third_party/Python/module/pexpect-2.4/ANSI.py282
1 files changed, 159 insertions, 123 deletions
diff --git a/lldb/third_party/Python/module/pexpect-2.4/ANSI.py b/lldb/third_party/Python/module/pexpect-2.4/ANSI.py
index 537017e90b2..003bab270e6 100644
--- a/lldb/third_party/Python/module/pexpect-2.4/ANSI.py
+++ b/lldb/third_party/Python/module/pexpect-2.4/ANSI.py
@@ -13,90 +13,106 @@ import FSM
import copy
import string
-def Emit (fsm):
+
+def Emit(fsm):
screen = fsm.memory[0]
screen.write_ch(fsm.input_symbol)
-def StartNumber (fsm):
- fsm.memory.append (fsm.input_symbol)
+def StartNumber(fsm):
+
+ fsm.memory.append(fsm.input_symbol)
-def BuildNumber (fsm):
+
+def BuildNumber(fsm):
ns = fsm.memory.pop()
ns = ns + fsm.input_symbol
- fsm.memory.append (ns)
+ fsm.memory.append(ns)
+
-def DoBackOne (fsm):
+def DoBackOne(fsm):
screen = fsm.memory[0]
- screen.cursor_back ()
+ screen.cursor_back()
-def DoBack (fsm):
+
+def DoBack(fsm):
count = int(fsm.memory.pop())
screen = fsm.memory[0]
- screen.cursor_back (count)
+ screen.cursor_back(count)
+
-def DoDownOne (fsm):
+def DoDownOne(fsm):
screen = fsm.memory[0]
- screen.cursor_down ()
+ screen.cursor_down()
-def DoDown (fsm):
+
+def DoDown(fsm):
count = int(fsm.memory.pop())
screen = fsm.memory[0]
- screen.cursor_down (count)
+ screen.cursor_down(count)
+
-def DoForwardOne (fsm):
+def DoForwardOne(fsm):
screen = fsm.memory[0]
- screen.cursor_forward ()
+ screen.cursor_forward()
-def DoForward (fsm):
+
+def DoForward(fsm):
count = int(fsm.memory.pop())
screen = fsm.memory[0]
- screen.cursor_forward (count)
+ screen.cursor_forward(count)
+
-def DoUpReverse (fsm):
+def DoUpReverse(fsm):
screen = fsm.memory[0]
screen.cursor_up_reverse()
-def DoUpOne (fsm):
+
+def DoUpOne(fsm):
screen = fsm.memory[0]
- screen.cursor_up ()
+ screen.cursor_up()
+
-def DoUp (fsm):
+def DoUp(fsm):
count = int(fsm.memory.pop())
screen = fsm.memory[0]
- screen.cursor_up (count)
+ screen.cursor_up(count)
-def DoHome (fsm):
+
+def DoHome(fsm):
c = int(fsm.memory.pop())
r = int(fsm.memory.pop())
screen = fsm.memory[0]
- screen.cursor_home (r,c)
+ screen.cursor_home(r, c)
+
-def DoHomeOrigin (fsm):
+def DoHomeOrigin(fsm):
c = 1
r = 1
screen = fsm.memory[0]
- screen.cursor_home (r,c)
+ screen.cursor_home(r, c)
+
-def DoEraseDown (fsm):
+def DoEraseDown(fsm):
screen = fsm.memory[0]
screen.erase_down()
-def DoErase (fsm):
+
+def DoErase(fsm):
arg = int(fsm.memory.pop())
screen = fsm.memory[0]
@@ -107,12 +123,14 @@ def DoErase (fsm):
elif arg == 2:
screen.erase_screen()
-def DoEraseEndOfLine (fsm):
+
+def DoEraseEndOfLine(fsm):
screen = fsm.memory[0]
screen.erase_end_of_line()
-def DoEraseLine (fsm):
+
+def DoEraseLine(fsm):
screen = fsm.memory[0]
if arg == 0:
@@ -122,146 +140,164 @@ def DoEraseLine (fsm):
elif arg == 2:
screen.erase_line()
-def DoEnableScroll (fsm):
+
+def DoEnableScroll(fsm):
screen = fsm.memory[0]
screen.scroll_screen()
-def DoCursorSave (fsm):
+
+def DoCursorSave(fsm):
screen = fsm.memory[0]
screen.cursor_save_attrs()
-def DoCursorRestore (fsm):
+
+def DoCursorRestore(fsm):
screen = fsm.memory[0]
screen.cursor_restore_attrs()
-def DoScrollRegion (fsm):
+
+def DoScrollRegion(fsm):
screen = fsm.memory[0]
r2 = int(fsm.memory.pop())
r1 = int(fsm.memory.pop())
- screen.scroll_screen_rows (r1,r2)
+ screen.scroll_screen_rows(r1, r2)
-def DoMode (fsm):
+
+def DoMode(fsm):
screen = fsm.memory[0]
- mode = fsm.memory.pop() # Should be 4
+ mode = fsm.memory.pop() # Should be 4
# screen.setReplaceMode ()
-def Log (fsm):
+
+def Log(fsm):
screen = fsm.memory[0]
fsm.memory = [screen]
- fout = open ('log', 'a')
- fout.write (fsm.input_symbol + ',' + fsm.current_state + '\n')
+ fout = open('log', 'a')
+ fout.write(fsm.input_symbol + ',' + fsm.current_state + '\n')
fout.close()
+
class term (screen.screen):
- """This is a placeholder.
+ """This is a placeholder.
In theory I might want to add other terminal types.
"""
- def __init__ (self, r=24, c=80):
- screen.screen.__init__(self, r,c)
+
+ def __init__(self, r=24, c=80):
+ screen.screen.__init__(self, r, c)
+
class ANSI (term):
"""This class encapsulates a generic terminal. It filters a stream and
maintains the state of a screen object. """
- def __init__ (self, r=24,c=80):
+ def __init__(self, r=24, c=80):
- term.__init__(self,r,c)
+ term.__init__(self, r, c)
#self.screen = screen (24,80)
- self.state = FSM.FSM ('INIT',[self])
- self.state.set_default_transition (Log, 'INIT')
- self.state.add_transition_any ('INIT', Emit, 'INIT')
- self.state.add_transition ('\x1b', 'INIT', None, 'ESC')
- self.state.add_transition_any ('ESC', Log, 'INIT')
- self.state.add_transition ('(', 'ESC', None, 'G0SCS')
- self.state.add_transition (')', 'ESC', None, 'G1SCS')
- self.state.add_transition_list ('AB012', 'G0SCS', None, 'INIT')
- self.state.add_transition_list ('AB012', 'G1SCS', None, 'INIT')
- self.state.add_transition ('7', 'ESC', DoCursorSave, 'INIT')
- self.state.add_transition ('8', 'ESC', DoCursorRestore, 'INIT')
- self.state.add_transition ('M', 'ESC', DoUpReverse, 'INIT')
- self.state.add_transition ('>', 'ESC', DoUpReverse, 'INIT')
- self.state.add_transition ('<', 'ESC', DoUpReverse, 'INIT')
- self.state.add_transition ('=', 'ESC', None, 'INIT') # Selects application keypad.
- self.state.add_transition ('#', 'ESC', None, 'GRAPHICS_POUND')
- self.state.add_transition_any ('GRAPHICS_POUND', None, 'INIT')
- self.state.add_transition ('[', 'ESC', None, 'ELB')
+ self.state = FSM.FSM('INIT', [self])
+ self.state.set_default_transition(Log, 'INIT')
+ self.state.add_transition_any('INIT', Emit, 'INIT')
+ self.state.add_transition('\x1b', 'INIT', None, 'ESC')
+ self.state.add_transition_any('ESC', Log, 'INIT')
+ self.state.add_transition('(', 'ESC', None, 'G0SCS')
+ self.state.add_transition(')', 'ESC', None, 'G1SCS')
+ self.state.add_transition_list('AB012', 'G0SCS', None, 'INIT')
+ self.state.add_transition_list('AB012', 'G1SCS', None, 'INIT')
+ self.state.add_transition('7', 'ESC', DoCursorSave, 'INIT')
+ self.state.add_transition('8', 'ESC', DoCursorRestore, 'INIT')
+ self.state.add_transition('M', 'ESC', DoUpReverse, 'INIT')
+ self.state.add_transition('>', 'ESC', DoUpReverse, 'INIT')
+ self.state.add_transition('<', 'ESC', DoUpReverse, 'INIT')
+ # Selects application keypad.
+ self.state.add_transition('=', 'ESC', None, 'INIT')
+ self.state.add_transition('#', 'ESC', None, 'GRAPHICS_POUND')
+ self.state.add_transition_any('GRAPHICS_POUND', None, 'INIT')
+ self.state.add_transition('[', 'ESC', None, 'ELB')
# ELB means Escape Left Bracket. That is ^[[
- self.state.add_transition ('H', 'ELB', DoHomeOrigin, 'INIT')
- self.state.add_transition ('D', 'ELB', DoBackOne, 'INIT')
- self.state.add_transition ('B', 'ELB', DoDownOne, 'INIT')
- self.state.add_transition ('C', 'ELB', DoForwardOne, 'INIT')
- self.state.add_transition ('A', 'ELB', DoUpOne, 'INIT')
- self.state.add_transition ('J', 'ELB', DoEraseDown, 'INIT')
- self.state.add_transition ('K', 'ELB', DoEraseEndOfLine, 'INIT')
- self.state.add_transition ('r', 'ELB', DoEnableScroll, 'INIT')
- self.state.add_transition ('m', 'ELB', None, 'INIT')
- self.state.add_transition ('?', 'ELB', None, 'MODECRAP')
- self.state.add_transition_list (string.digits, 'ELB', StartNumber, 'NUMBER_1')
- self.state.add_transition_list (string.digits, 'NUMBER_1', BuildNumber, 'NUMBER_1')
- self.state.add_transition ('D', 'NUMBER_1', DoBack, 'INIT')
- self.state.add_transition ('B', 'NUMBER_1', DoDown, 'INIT')
- self.state.add_transition ('C', 'NUMBER_1', DoForward, 'INIT')
- self.state.add_transition ('A', 'NUMBER_1', DoUp, 'INIT')
- self.state.add_transition ('J', 'NUMBER_1', DoErase, 'INIT')
- self.state.add_transition ('K', 'NUMBER_1', DoEraseLine, 'INIT')
- self.state.add_transition ('l', 'NUMBER_1', DoMode, 'INIT')
- ### It gets worse... the 'm' code can have infinite number of
- ### number;number;number before it. I've never seen more than two,
- ### but the specs say it's allowed. crap!
- self.state.add_transition ('m', 'NUMBER_1', None, 'INIT')
- ### LED control. Same problem as 'm' code.
- self.state.add_transition ('q', 'NUMBER_1', None, 'INIT')
-
+ self.state.add_transition('H', 'ELB', DoHomeOrigin, 'INIT')
+ self.state.add_transition('D', 'ELB', DoBackOne, 'INIT')
+ self.state.add_transition('B', 'ELB', DoDownOne, 'INIT')
+ self.state.add_transition('C', 'ELB', DoForwardOne, 'INIT')
+ self.state.add_transition('A', 'ELB', DoUpOne, 'INIT')
+ self.state.add_transition('J', 'ELB', DoEraseDown, 'INIT')
+ self.state.add_transition('K', 'ELB', DoEraseEndOfLine, 'INIT')
+ self.state.add_transition('r', 'ELB', DoEnableScroll, 'INIT')
+ self.state.add_transition('m', 'ELB', None, 'INIT')
+ self.state.add_transition('?', 'ELB', None, 'MODECRAP')
+ self.state.add_transition_list(
+ string.digits, 'ELB', StartNumber, 'NUMBER_1')
+ self.state.add_transition_list(
+ string.digits, 'NUMBER_1', BuildNumber, 'NUMBER_1')
+ self.state.add_transition('D', 'NUMBER_1', DoBack, 'INIT')
+ self.state.add_transition('B', 'NUMBER_1', DoDown, 'INIT')
+ self.state.add_transition('C', 'NUMBER_1', DoForward, 'INIT')
+ self.state.add_transition('A', 'NUMBER_1', DoUp, 'INIT')
+ self.state.add_transition('J', 'NUMBER_1', DoErase, 'INIT')
+ self.state.add_transition('K', 'NUMBER_1', DoEraseLine, 'INIT')
+ self.state.add_transition('l', 'NUMBER_1', DoMode, 'INIT')
+ # It gets worse... the 'm' code can have infinite number of
+ # number;number;number before it. I've never seen more than two,
+ # but the specs say it's allowed. crap!
+ self.state.add_transition('m', 'NUMBER_1', None, 'INIT')
+ # LED control. Same problem as 'm' code.
+ self.state.add_transition('q', 'NUMBER_1', None, 'INIT')
+
# \E[?47h appears to be "switch to alternate screen"
# \E[?47l restores alternate screen... I think.
- self.state.add_transition_list (string.digits, 'MODECRAP', StartNumber, 'MODECRAP_NUM')
- self.state.add_transition_list (string.digits, 'MODECRAP_NUM', BuildNumber, 'MODECRAP_NUM')
- self.state.add_transition ('l', 'MODECRAP_NUM', None, 'INIT')
- self.state.add_transition ('h', 'MODECRAP_NUM', None, 'INIT')
-
-#RM Reset Mode Esc [ Ps l none
- self.state.add_transition (';', 'NUMBER_1', None, 'SEMICOLON')
- self.state.add_transition_any ('SEMICOLON', Log, 'INIT')
- self.state.add_transition_list (string.digits, 'SEMICOLON', StartNumber, 'NUMBER_2')
- self.state.add_transition_list (string.digits, 'NUMBER_2', BuildNumber, 'NUMBER_2')
- self.state.add_transition_any ('NUMBER_2', Log, 'INIT')
- self.state.add_transition ('H', 'NUMBER_2', DoHome, 'INIT')
- self.state.add_transition ('f', 'NUMBER_2', DoHome, 'INIT')
- self.state.add_transition ('r', 'NUMBER_2', DoScrollRegion, 'INIT')
- ### It gets worse... the 'm' code can have infinite number of
- ### number;number;number before it. I've never seen more than two,
- ### but the specs say it's allowed. crap!
- self.state.add_transition ('m', 'NUMBER_2', None, 'INIT')
- ### LED control. Same problem as 'm' code.
- self.state.add_transition ('q', 'NUMBER_2', None, 'INIT')
-
- def process (self, c):
+ self.state.add_transition_list(
+ string.digits, 'MODECRAP', StartNumber, 'MODECRAP_NUM')
+ self.state.add_transition_list(
+ string.digits,
+ 'MODECRAP_NUM',
+ BuildNumber,
+ 'MODECRAP_NUM')
+ self.state.add_transition('l', 'MODECRAP_NUM', None, 'INIT')
+ self.state.add_transition('h', 'MODECRAP_NUM', None, 'INIT')
+
+# RM Reset Mode Esc [ Ps l none
+ self.state.add_transition(';', 'NUMBER_1', None, 'SEMICOLON')
+ self.state.add_transition_any('SEMICOLON', Log, 'INIT')
+ self.state.add_transition_list(
+ string.digits, 'SEMICOLON', StartNumber, 'NUMBER_2')
+ self.state.add_transition_list(
+ string.digits, 'NUMBER_2', BuildNumber, 'NUMBER_2')
+ self.state.add_transition_any('NUMBER_2', Log, 'INIT')
+ self.state.add_transition('H', 'NUMBER_2', DoHome, 'INIT')
+ self.state.add_transition('f', 'NUMBER_2', DoHome, 'INIT')
+ self.state.add_transition('r', 'NUMBER_2', DoScrollRegion, 'INIT')
+ # It gets worse... the 'm' code can have infinite number of
+ # number;number;number before it. I've never seen more than two,
+ # but the specs say it's allowed. crap!
+ self.state.add_transition('m', 'NUMBER_2', None, 'INIT')
+ # LED control. Same problem as 'm' code.
+ self.state.add_transition('q', 'NUMBER_2', None, 'INIT')
+
+ def process(self, c):
self.state.process(c)
- def process_list (self, l):
+ def process_list(self, l):
self.write(l)
- def write (self, s):
+ def write(self, s):
for c in s:
self.process(c)
- def flush (self):
+ def flush(self):
pass
- def write_ch (self, ch):
-
+ def write_ch(self, ch):
"""This puts a character at the current cursor position. cursor
position if moved forward with wrap-around, but no scrolling is done if
the cursor hits the lower-right corner of the screen. """
@@ -270,7 +306,7 @@ class ANSI (term):
ch = ch[0]
if ch == '\r':
- # self.crlf()
+ # self.crlf()
return
if ch == '\n':
self.crlf()
@@ -281,8 +317,8 @@ class ANSI (term):
return
if ch not in string.printable:
- fout = open ('log', 'a')
- fout.write ('Nonprint: ' + str(ord(ch)) + '\n')
+ fout = open('log', 'a')
+ fout.write('Nonprint: ' + str(ord(ch)) + '\n')
fout.close()
return
self.put_abs(self.cur_r, self.cur_c, ch)
@@ -292,10 +328,10 @@ class ANSI (term):
if old_c == self.cur_c:
self.cursor_down()
if old_r != self.cur_r:
- self.cursor_home (self.cur_r, 1)
+ self.cursor_home(self.cur_r, 1)
else:
- self.scroll_up ()
- self.cursor_home (self.cur_r, 1)
+ self.scroll_up()
+ self.cursor_home(self.cur_r, 1)
self.erase_line()
# def test (self):
@@ -329,6 +365,6 @@ class ANSI (term):
# self.write_ch (c)
# print str(self)
#
-#if __name__ == '__main__':
+# if __name__ == '__main__':
# t = ANSI(6,65)
# t.test()
OpenPOWER on IntegriCloud