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'
+        }