summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtcvt.py84
1 files changed, 44 insertions, 40 deletions
diff --git a/tcvt.py b/tcvt.py
index 1b3bbfd..2a857df 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -515,16 +515,17 @@ class Terminal:
def feed(self, char):
self.mode[0](char, *self.mode[1:])
+ feed_simple_table = {
+ ord('\a'): do_bel,
+ ord('\b'): do_cub1,
+ ord('\n'): do_ind,
+ ord('\r'): do_cr,
+ ord('\t'): do_ht,
+ }
def feed_simple(self, char):
- func = {
- ord('\a'): self.do_bel,
- ord('\b'): self.do_cub1,
- ord('\n'): self.do_ind,
- ord('\r'): self.do_cr,
- ord('\t'): self.do_ht,
- }.get(char)
+ func = self.feed_simple_table.get(char)
if func:
- func()
+ func(self)
elif char in simple_characters:
self.addch(char)
elif char == 0x1b:
@@ -548,22 +549,23 @@ class Terminal:
else:
raise ValueError("feed esc %r" % char)
+ feed_esc_opbr_table = {
+ ord('A'): do_cuu1,
+ ord('B'): do_cud1,
+ ord('C'): do_cuf1,
+ ord('D'): do_cub1,
+ ord('H'): do_home,
+ ord('J'): do_ed,
+ ord('L'): do_il1,
+ ord('M'): do_dl1,
+ ord('K'): do_el,
+ ord('P'): do_dch1,
+ }
def feed_esc_opbr(self, char):
self.feed_reset()
- func = {
- ord('A'): self.do_cuu1,
- ord('B'): self.do_cud1,
- ord('C'): self.do_cuf1,
- ord('D'): self.do_cub1,
- ord('H'): self.do_home,
- ord('J'): self.do_ed,
- ord('L'): self.do_il1,
- ord('M'): self.do_dl1,
- ord('K'): self.do_el,
- ord('P'): self.do_dch1,
- }.get(char)
+ func = self.feed_esc_opbr_table.get(char)
if func:
- func()
+ func(self)
elif char == ord(b'm'):
self.feed_esc_opbr_next(char, bytearray(b'0'))
elif char in bytearray(b'0123456789'):
@@ -571,15 +573,16 @@ class Terminal:
else:
raise ValueError("feed esc [ %r" % char)
+ feed_color_table = {
+ 1: do_bold,
+ 4: do_smul,
+ 5: do_blink,
+ 8: do_invis,
+ }
def feed_color(self, code):
- func = {
- 1: self.do_bold,
- 4: self.do_smul,
- 5: self.do_blink,
- 8: self.do_invis,
- }.get(code)
+ func = self.feed_color_table.get(code)
if func:
- func()
+ func(self)
elif code == 0:
self.fg = self.bg = 0
self.screen.attrset(0)
@@ -606,21 +609,22 @@ class Terminal:
else:
raise ValueError("feed esc [ %r m" % code)
+ feed_esc_opbr_next_table = {
+ ord('A'): do_cuu,
+ ord('B'): do_cud,
+ ord('C'): do_cuf,
+ ord('D'): do_cub,
+ ord('L'): do_il,
+ ord('M'): do_dl,
+ ord('P'): do_dch,
+ ord('X'): do_ech,
+ ord('@'): do_ich,
+ }
def feed_esc_opbr_next(self, char, prev):
self.feed_reset()
- func = {
- ord('A'): self.do_cuu,
- ord('B'): self.do_cud,
- ord('C'): self.do_cuf,
- ord('D'): self.do_cub,
- ord('L'): self.do_il,
- ord('M'): self.do_dl,
- ord('P'): self.do_dch,
- ord('X'): self.do_ech,
- ord('@'): self.do_ich,
- }.get(char)
+ func = self.feed_esc_opbr_next_table.get(char)
if func and prev.isdigit():
- func(int(prev))
+ func(self, int(prev))
elif char in bytearray(b'0123456789;'):
self.mode = (self.feed_esc_opbr_next, prev + bytearray((char,)))
elif char == ord(b'm'):