r5441 - pyrepl/branch/pyrepl-rework-n/pyrepl
[email protected] Mon, 5 Jul 2004 17:25:47 +0200 (MEST)
| Newsgroups | gmane.comp.python.pyrepl.checkins |
|---|---|
| Message-ID | <[email protected]> |
Author: mwh Date: Mon Jul 5 17:25:46 2004 New Revision: 5441 Removed: pyrepl/branch/pyrepl-rework-n/pyrepl/input.py pyrepl/branch/pyrepl-rework-n/pyrepl/unix_eventqueue.py Modified: pyrepl/branch/pyrepl-rework-n/pyrepl/reader.py pyrepl/branch/pyrepl-rework-n/pyrepl/unix_console.py Log: kill some code Deleted: /pyrepl/branch/pyrepl-rework-n/pyrepl/input.py ============================================================================== --- /pyrepl/branch/pyrepl-rework-n/pyrepl/input.py Mon Jul 5 17:25:46 2004 +++ (empty file) @@ -1,97 +0,0 @@ -# Copyright 2000-2004 Michael Hudson [email protected] -# -# All Rights Reserved -# -# -# Permission to use, copy, modify, and distribute this software and -# its documentation for any purpose is hereby granted without fee, -# provided that the above copyright notice appear in all copies and -# that both that copyright notice and this permission notice appear in -# supporting documentation. -# -# THE AUTHOR MICHAEL HUDSON DISCLAIMS ALL WARRANTIES WITH REGARD TO -# THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -# AND FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, -# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -# (naming modules after builtin functions is not such a hot idea...) - -# an KeyTrans instance translates Event objects into Command objects - -# hmm, at what level do we want [C-i] and [tab] to be equivalent? -# [meta-a] and [esc a]? obviously, these are going to be equivalent -# for the UnixConsole, but should they be for PygameConsole? - -# it would in any situation seem to be a bad idea to bind, say, [tab] -# and [C-i] to *different* things... but should binding one bind the -# other? - -# executive, temporary decision: [tab] and [C-i] are distinct, but -# [meta-key] is identified with [esc key]. We demand that any console -# class does quite a lot towards emulating a unix terminal. - -import unicodedata - -class InputTranslator(object): - def push(self, evt): - pass - def get(self): - pass - def empty(self): - pass - -class KeymapTranslator(InputTranslator): - def __init__(self, keymap, verbose=0, - invalid_cls=None, character_cls=None): - self.verbose = verbose - from pyrepl.keymap import compile_keymap, parse_keys - self.keymap = keymap - self.invalid_cls = invalid_cls - self.character_cls = character_cls - d = {} - for keyspec, command in keymap: - keyseq = tuple(parse_keys(keyspec)) - d[keyseq] = command - if self.verbose: - print d - self.k = self.ck = compile_keymap(d, ()) - self.results = [] - self.stack = [] - def push(self, evt): - if self.verbose: - print "pushed", evt.data, - key = evt.data - d = self.k.get(key) - if isinstance(d, dict): - if self.verbose: - print "transition" - self.stack.append(key) - self.k = d - else: - if d is None: - if self.verbose: - print "invalid" - if self.stack or len(key) > 1 or unicodedata.category(key) == 'C': - self.results.append( - (self.invalid_cls, self.stack + [key])) - else: - # small optimization: - self.k[key] = self.character_cls - self.results.append( - (self.character_cls, [key])) - else: - if self.verbose: - print "matched", d - self.results.append((d, self.stack + [key])) - self.stack = [] - self.k = self.ck - def get(self): - if self.results: - return self.results.pop(0) - else: - return None - def empty(self): - return not self.results Modified: pyrepl/branch/pyrepl-rework-n/pyrepl/reader.py ============================================================================== --- pyrepl/branch/pyrepl-rework-n/pyrepl/reader.py (original) +++ pyrepl/branch/pyrepl-rework-n/pyrepl/reader.py Mon Jul 5 17:25:46 2004 @@ -545,8 +545,8 @@ def bind(self, spec, command): self.keymap = self.keymap + ((spec, command),) - self.input_trans = input.KeymapTranslator( - self.keymap, + self.input_trans = commandsm.CommandSM( + None, self.console.keys, self.keymap, invalid_cls='invalid-key', character_cls='self-insert') Modified: pyrepl/branch/pyrepl-rework-n/pyrepl/unix_console.py ============================================================================== --- pyrepl/branch/pyrepl-rework-n/pyrepl/unix_console.py (original) +++ pyrepl/branch/pyrepl-rework-n/pyrepl/unix_console.py Mon Jul 5 17:25:46 2004 @@ -21,8 +21,7 @@ import signal, re, time, sys from fcntl import ioctl from pyrepl.fancy_termios import tcgetattr, tcsetattr -from pyrepl.console import Console, Event -from pyrepl import unix_eventqueue +from pyrepl.console import Console from pyrepl.dfa import unicodesm, keystrokesm # there are arguments for changing this to "refresh" Deleted: /pyrepl/branch/pyrepl-rework-n/pyrepl/unix_eventqueue.py ============================================================================== --- /pyrepl/branch/pyrepl-rework-n/pyrepl/unix_eventqueue.py Mon Jul 5 17:25:46 2004 +++ (empty file) @@ -1,83 +0,0 @@ -# Copyright 2000-2004 Michael Hudson [email protected] -# -# All Rights Reserved -# -# -# Permission to use, copy, modify, and distribute this software and -# its documentation for any purpose is hereby granted without fee, -# provided that the above copyright notice appear in all copies and -# that both that copyright notice and this permission notice appear in -# supporting documentation. -# -# THE AUTHOR MICHAEL HUDSON DISCLAIMS ALL WARRANTIES WITH REGARD TO -# THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -# AND FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, -# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -# Bah, this would be easier to test if curses/terminfo didn't have so -# much non-introspectable global state. - -from pyrepl import keymap -from pyrepl.console import Event -import curses -from termios import tcgetattr, VERASE - -_keynames = { - "delete" : "kdch1", - "down" : "kcud1", - "end" : "kend", - "enter" : "kent", - "f1" : "kf1", "f2" : "kf2", "f3" : "kf3", "f4" : "kf4", - "f5" : "kf5", "f6" : "kf6", "f7" : "kf7", "f8" : "kf8", - "f9" : "kf9", "f10" : "kf10", "f11" : "kf11", "f12" : "kf12", - "f13" : "kf13", "f14" : "kf14", "f15" : "kf15", "f16" : "kf16", - "f17" : "kf17", "f18" : "kf18", "f19" : "kf19", "f20" : "kf20", - "home" : "khome", - "insert" : "kich1", - "left" : "kcub1", - "page down" : "knp", - "page up" : "kpp", - "right" : "kcuf1", - "up" : "kcuu1", - } - -class EventQueue(object): - def __init__(self, fd): - our_keycodes = {} - for key, tiname in _keynames.items(): - keycode = curses.tigetstr(tiname) - if keycode: - our_keycodes[keycode] = unicode(key) - our_keycodes[tcgetattr(fd)[6][VERASE]] = u'backspace' - self.k = self.ck = keymap.compile_keymap(our_keycodes) - self.events = [] - self.buf = [] - def get(self): - if self.events: - return self.events.pop(0) - else: - return None - def empty(self): - return not self.events - def insert(self, event): - self.events.append(event) - def push(self, char): - if char in self.k: - k = self.k[char] - if isinstance(k, dict): - self.buf.append(char) - self.k = k - else: - self.events.append(Event('key', k, ''.join(self.buf) + char)) - self.buf = [] - self.k = self.ck - elif self.buf: - self.events.extend([Event('key', c, c) for c in self.buf]) - self.buf = [] - self.k = self.ck - self.push(char) - else: - self.events.append(Event('key', char, char))