[pypy-commit] pyrepl default: split keymap creation from EventQueue

RonnyPfannschmidt noreply at buildbot.pypy.org
Thu May 3 18:10:43 CEST 2012


Author: Ronny Pfannschmidt <Ronny.Pfannschmidt at gmx.de>
Branch: 
Changeset: r189:3ca3f2b26ee3
Date: 2012-05-03 17:58 +0200
http://bitbucket.org/pypy/pyrepl/changeset/3ca3f2b26ee3/

Log:	split keymap creation from EventQueue

diff --git a/pyrepl/unix_eventqueue.py b/pyrepl/unix_eventqueue.py
--- a/pyrepl/unix_eventqueue.py
+++ b/pyrepl/unix_eventqueue.py
@@ -52,18 +52,29 @@
     "up" : "kcuu1",
     }
 
-class EventQueue(object):
-    def __init__(self, fd, encoding):
-        our_keycodes = {}
-        for key, tiname in _keynames.items():
-            keycode = curses.tigetstr(tiname)
-            trace('key {key} tiname {tiname} keycode {keycode!r}', **locals())
-            if keycode:
-                our_keycodes[keycode] = key
-        if os.isatty(fd):
-            our_keycodes[tcgetattr(fd)[6][VERASE]] = unicode('backspace')
-        self.k = self.ck = keymap.compile_keymap(our_keycodes)
-        trace('keymap {k!r}', k=self.k)
+def general_keycodes():
+    keycodes = {}
+    for key, tiname in _keynames.items():
+        keycode = curses.tigetstr(tiname)
+        trace('key {key} tiname {tiname} keycode {keycode!r}', **locals())
+        if keycode:
+            keycodes[keycode] = key
+    return keycodes
+
+
+
+def EventQueue(fd, encoding):
+    keycodes = general_keycodes()
+    if os.isatty(fd):
+        backspace = tcgetattr(fd)[6][VERASE]
+        keycodes[backspace] = unicode('backspace')
+    k = keymap.compile_keymap(keycodes)
+    trace('keymap {k!r}', k=k)
+    return EncodedQueue(k, encoding)
+
+class EncodedQueue(object):
+    def __init__(self, keymap, encoding):
+        self.k = self.ck = keymap
         self.events = []
         self.buf = []
         self.encoding=encoding
diff --git a/testing/test_unix_reader.py b/testing/test_unix_reader.py
--- a/testing/test_unix_reader.py
+++ b/testing/test_unix_reader.py
@@ -1,9 +1,8 @@
-from pyrepl.unix_eventqueue import EventQueue
+from pyrepl.unix_eventqueue import EncodedQueue
 
 from pyrepl import curses
 
 
- at pytest.mark.xfail(run=False, reason='wtf segfault')
 def test_simple():
-    q = EventQueue(0, 'utf-8')
+    q = EncodedQueue({}, 'utf-8')
 


More information about the pypy-commit mailing list