Author: Tyler Wade <way...@gmail.com>
Branch: utf8-unicode2
Changeset: r72471:6ae77b6a146a
Date: 2014-07-19 07:40 -0500
http://bitbucket.org/pypy/pypy/changeset/6ae77b6a146a/

Log:    Fix unicodedb

diff --git a/pypy/module/unicodedata/interp_ucd.py 
b/pypy/module/unicodedata/interp_ucd.py
--- a/pypy/module/unicodedata/interp_ucd.py
+++ b/pypy/module/unicodedata/interp_ucd.py
@@ -6,11 +6,11 @@
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.typedef import TypeDef, interp_attrproperty
+from pypy.interpreter.utf8 import utf8chr
 from rpython.rlib.rarithmetic import r_longlong
 from rpython.rlib.objectmodel import we_are_translated
-from rpython.rlib.runicode import MAXUNICODE
 from rpython.rlib.unicodedata import unicodedb_5_2_0, unicodedb_3_2_0
-from rpython.rlib.runicode import code_to_unichr, ord_accepts_surrogate
+from rpython.rlib.runicode import ord_accepts_surrogate
 import sys
 
 
@@ -30,47 +30,15 @@
 # unicode code point.
 
 
-if MAXUNICODE > 0xFFFF:
-    # Target is wide build
-    def unichr_to_code_w(space, w_unichr):
-        if not space.isinstance_w(w_unichr, space.w_unicode):
+def unichr_to_code_w(space, w_unichr):
+    if not space.isinstance_w(w_unichr, space.w_unicode):
+        raise OperationError(space.w_TypeError, space.wrap(
+            'argument 1 must be unicode'))
+
+        if not space.len_w(w_unichr) == 1:
             raise OperationError(space.w_TypeError, space.wrap(
-                'argument 1 must be unicode'))
-
-        if not we_are_translated() and sys.maxunicode == 0xFFFF:
-            # Host CPython is narrow build, accept surrogates
-            try:
-                return ord_accepts_surrogate(space.unicode_w(w_unichr))
-            except TypeError:
-                raise OperationError(space.w_TypeError, space.wrap(
                     'need a single Unicode character as parameter'))
-        else:
-            if not space.len_w(w_unichr) == 1:
-                raise OperationError(space.w_TypeError, space.wrap(
-                    'need a single Unicode character as parameter'))
-            return space.int_w(space.ord(w_unichr))
-
-else:
-    # Target is narrow build
-    def unichr_to_code_w(space, w_unichr):
-        if not space.isinstance_w(w_unichr, space.w_unicode):
-            raise OperationError(space.w_TypeError, space.wrap(
-                'argument 1 must be unicode'))
-
-        if not we_are_translated() and sys.maxunicode > 0xFFFF:
-            # Host CPython is wide build, forbid surrogates
-            if not space.len_w(w_unichr) == 1:
-                raise OperationError(space.w_TypeError, space.wrap(
-                    'need a single Unicode character as parameter'))
-            return space.int_w(space.ord(w_unichr))
-
-        else:
-            # Accept surrogates
-            try:
-                return ord_accepts_surrogate(space.unicode_w(w_unichr))
-            except TypeError:
-                raise OperationError(space.w_TypeError, space.wrap(
-                    'need a single Unicode character as parameter'))
+    return space.int_w(space.ord(w_unichr))
 
 
 class UCD(W_Root):
@@ -108,7 +76,7 @@
         except KeyError:
             msg = space.mod(space.wrap("undefined character name '%s'"), 
space.wrap(name))
             raise OperationError(space.w_KeyError, msg)
-        return space.wrap(code_to_unichr(code))
+        return space.wrap(utf8chr(code))
 
     def name(self, space, w_unichr, w_default=None):
         code = unichr_to_code_w(space, w_unichr)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to