r80126 - pyrepl/trunk/pyrepl/pyrepl
[email protected] Tue, 28 Dec 2010 08:53:02 +0100 (CET)
| Newsgroups | gmane.comp.python.pyrepl.checkins |
|---|---|
| Message-ID | <[email protected]> |
Author: antocuni
Date: Tue Dec 28 08:53:00 2010
New Revision: 80126
Added:
pyrepl/trunk/pyrepl/pyrepl/unicodedata_.py (contents, props changed)
Modified:
pyrepl/trunk/pyrepl/pyrepl/input.py
pyrepl/trunk/pyrepl/pyrepl/reader.py
Log:
make pyrepl working even if unicodedata is not importable. Useful with a pypy translated without it
Modified: pyrepl/trunk/pyrepl/pyrepl/input.py
==============================================================================
--- pyrepl/trunk/pyrepl/pyrepl/input.py (original)
+++ pyrepl/trunk/pyrepl/pyrepl/input.py Tue Dec 28 08:53:00 2010
@@ -33,7 +33,7 @@
# [meta-key] is identified with [esc key]. We demand that any console
# class does quite a lot towards emulating a unix terminal.
-import unicodedata
+from pyrepl import unicodedata_
class InputTranslator(object):
def push(self, evt):
@@ -74,7 +74,7 @@
if d is None:
if self.verbose:
print "invalid"
- if self.stack or len(key) > 1 or unicodedata.category(key) == 'C':
+ if self.stack or len(key) > 1 or unicodedata_.category(key) == 'C':
self.results.append(
(self.invalid_cls, self.stack + [key]))
else:
Modified: pyrepl/trunk/pyrepl/pyrepl/reader.py
==============================================================================
--- pyrepl/trunk/pyrepl/pyrepl/reader.py (original)
+++ pyrepl/trunk/pyrepl/pyrepl/reader.py Tue Dec 28 08:53:00 2010
@@ -19,14 +19,15 @@
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-import types, unicodedata
+import types
+from pyrepl import unicodedata_
from pyrepl import commands
from pyrepl import input
def _make_unctrl_map():
uc_map = {}
for c in map(unichr, range(256)):
- if unicodedata.category(c)[0] <> 'C':
+ if unicodedata_.category(c)[0] <> 'C':
uc_map[c] = c
for i in range(32):
c = unichr(i)
@@ -51,11 +52,10 @@
del init_unctrl_map
except ImportError:
def _my_unctrl(c, u=_make_unctrl_map()):
- import unicodedata
if c in u:
return u[c]
else:
- if unicodedata.category(c).startswith('C'):
+ if unicodedata_.category(c).startswith('C'):
return '\u%04x'%(ord(c),)
else:
return c
Added: pyrepl/trunk/pyrepl/pyrepl/unicodedata_.py
==============================================================================
--- (empty file)
+++ pyrepl/trunk/pyrepl/pyrepl/unicodedata_.py Tue Dec 28 08:53:00 2010
@@ -0,0 +1,59 @@
+try:
+ from unicodedata import *
+except ImportError:
+
+ def category(ch):
+ """
+ ASCII only implementation
+ """
+ if type(ch) is not unicode:
+ raise TypeError
+ if len(ch) != 1:
+ raise TypeError
+ return _categories.get(ord(ch), 'Co') # "Other, private use"
+
+ _categories = {
+ 0: 'Cc', 1: 'Cc', 2: 'Cc', 3: 'Cc', 4: 'Cc', 5: 'Cc',
+ 6: 'Cc', 7: 'Cc', 8: 'Cc', 9: 'Cc', 10: 'Cc', 11: 'Cc',
+ 12: 'Cc', 13: 'Cc', 14: 'Cc', 15: 'Cc', 16: 'Cc', 17: 'Cc',
+ 18: 'Cc', 19: 'Cc', 20: 'Cc', 21: 'Cc', 22: 'Cc', 23: 'Cc',
+ 24: 'Cc', 25: 'Cc', 26: 'Cc', 27: 'Cc', 28: 'Cc', 29: 'Cc',
+ 30: 'Cc', 31: 'Cc', 32: 'Zs', 33: 'Po', 34: 'Po', 35: 'Po',
+ 36: 'Sc', 37: 'Po', 38: 'Po', 39: 'Po', 40: 'Ps', 41: 'Pe',
+ 42: 'Po', 43: 'Sm', 44: 'Po', 45: 'Pd', 46: 'Po', 47: 'Po',
+ 48: 'Nd', 49: 'Nd', 50: 'Nd', 51: 'Nd', 52: 'Nd', 53: 'Nd',
+ 54: 'Nd', 55: 'Nd', 56: 'Nd', 57: 'Nd', 58: 'Po', 59: 'Po',
+ 60: 'Sm', 61: 'Sm', 62: 'Sm', 63: 'Po', 64: 'Po', 65: 'Lu',
+ 66: 'Lu', 67: 'Lu', 68: 'Lu', 69: 'Lu', 70: 'Lu', 71: 'Lu',
+ 72: 'Lu', 73: 'Lu', 74: 'Lu', 75: 'Lu', 76: 'Lu', 77: 'Lu',
+ 78: 'Lu', 79: 'Lu', 80: 'Lu', 81: 'Lu', 82: 'Lu', 83: 'Lu',
+ 84: 'Lu', 85: 'Lu', 86: 'Lu', 87: 'Lu', 88: 'Lu', 89: 'Lu',
+ 90: 'Lu', 91: 'Ps', 92: 'Po', 93: 'Pe', 94: 'Sk', 95: 'Pc',
+ 96: 'Sk', 97: 'Ll', 98: 'Ll', 99: 'Ll', 100: 'Ll', 101: 'Ll',
+ 102: 'Ll', 103: 'Ll', 104: 'Ll', 105: 'Ll', 106: 'Ll', 107: 'Ll',
+ 108: 'Ll', 109: 'Ll', 110: 'Ll', 111: 'Ll', 112: 'Ll', 113: 'Ll',
+ 114: 'Ll', 115: 'Ll', 116: 'Ll', 117: 'Ll', 118: 'Ll', 119: 'Ll',
+ 120: 'Ll', 121: 'Ll', 122: 'Ll', 123: 'Ps', 124: 'Sm', 125: 'Pe',
+ 126: 'Sm', 127: 'Cc', 128: 'Cc', 129: 'Cc', 130: 'Cc', 131: 'Cc',
+ 132: 'Cc', 133: 'Cc', 134: 'Cc', 135: 'Cc', 136: 'Cc', 137: 'Cc',
+ 138: 'Cc', 139: 'Cc', 140: 'Cc', 141: 'Cc', 142: 'Cc', 143: 'Cc',
+ 144: 'Cc', 145: 'Cc', 146: 'Cc', 147: 'Cc', 148: 'Cc', 149: 'Cc',
+ 150: 'Cc', 151: 'Cc', 152: 'Cc', 153: 'Cc', 154: 'Cc', 155: 'Cc',
+ 156: 'Cc', 157: 'Cc', 158: 'Cc', 159: 'Cc', 160: 'Zs', 161: 'Po',
+ 162: 'Sc', 163: 'Sc', 164: 'Sc', 165: 'Sc', 166: 'So', 167: 'So',
+ 168: 'Sk', 169: 'So', 170: 'Ll', 171: 'Pi', 172: 'Sm', 173: 'Cf',
+ 174: 'So', 175: 'Sk', 176: 'So', 177: 'Sm', 178: 'No', 179: 'No',
+ 180: 'Sk', 181: 'Ll', 182: 'So', 183: 'Po', 184: 'Sk', 185: 'No',
+ 186: 'Ll', 187: 'Pf', 188: 'No', 189: 'No', 190: 'No', 191: 'Po',
+ 192: 'Lu', 193: 'Lu', 194: 'Lu', 195: 'Lu', 196: 'Lu', 197: 'Lu',
+ 198: 'Lu', 199: 'Lu', 200: 'Lu', 201: 'Lu', 202: 'Lu', 203: 'Lu',
+ 204: 'Lu', 205: 'Lu', 206: 'Lu', 207: 'Lu', 208: 'Lu', 209: 'Lu',
+ 210: 'Lu', 211: 'Lu', 212: 'Lu', 213: 'Lu', 214: 'Lu', 215: 'Sm',
+ 216: 'Lu', 217: 'Lu', 218: 'Lu', 219: 'Lu', 220: 'Lu', 221: 'Lu',
+ 222: 'Lu', 223: 'Ll', 224: 'Ll', 225: 'Ll', 226: 'Ll', 227: 'Ll',
+ 228: 'Ll', 229: 'Ll', 230: 'Ll', 231: 'Ll', 232: 'Ll', 233: 'Ll',
+ 234: 'Ll', 235: 'Ll', 236: 'Ll', 237: 'Ll', 238: 'Ll', 239: 'Ll',
+ 240: 'Ll', 241: 'Ll', 242: 'Ll', 243: 'Ll', 244: 'Ll', 245: 'Ll',
+ 246: 'Ll', 247: 'Sm', 248: 'Ll', 249: 'Ll', 250: 'Ll', 251: 'Ll',
+ 252: 'Ll', 253: 'Ll', 254: 'Ll'
+ }