[pypy-commit] pypy refactor-str-types: Remove use of unicode.is* which isn't supported in RPython.

Manuel Jacob noreply at buildbot.pypy.org
Thu Jul 25 19:40:34 CEST 2013


Author: Manuel Jacob
Branch: refactor-str-types
Changeset: r65654:cfc74ab95eda
Date: 2013-07-25 19:29 +0200
http://bitbucket.org/pypy/pypy/changeset/cfc74ab95eda/

Log:	Remove use of unicode.is* which isn't supported in RPython.

diff --git a/pypy/objspace/std/stringmethods.py b/pypy/objspace/std/stringmethods.py
--- a/pypy/objspace/std/stringmethods.py
+++ b/pypy/objspace/std/stringmethods.py
@@ -336,12 +336,12 @@
         v = self._val(space)
         if len(v) == 1:
             c = v[0]
-            return space.newbool(c.islower())
+            return space.newbool(self._islower(c))
         cased = False
         for idx in range(len(v)):
-            if v[idx].isupper():
+            if self._isupper(v[idx]):
                 return space.w_False
-            elif not cased and v[idx].islower():
+            elif not cased and self._islower(v[idx]):
                 cased = True
         return space.newbool(cased)
 
@@ -357,12 +357,12 @@
 
         for pos in range(0, len(input)):
             ch = input[pos]
-            if ch.isupper():
+            if self._isupper(ch):
                 if previous_is_cased:
                     return space.w_False
                 previous_is_cased = True
                 cased = True
-            elif ch.islower():
+            elif self._islower(ch):
                 if not previous_is_cased:
                     return space.w_False
                 cased = True
@@ -376,12 +376,12 @@
         v = self._val(space)
         if len(v) == 1:
             c = v[0]
-            return space.newbool(c.isupper())
+            return space.newbool(self._isupper(c))
         cased = False
         for idx in range(len(v)):
-            if v[idx].islower():
+            if self._islower(v[idx]):
                 return space.w_False
-            elif not cased and v[idx].isupper():
+            elif not cased and self._isupper(v[idx]):
                 cased = True
         return space.newbool(cased)
 
@@ -535,7 +535,7 @@
             while True:
                 # find the beginning of the next word
                 while i < length:
-                    if not value[i].isspace():
+                    if not self._isspace(value[i]):
                         break   # found
                     i += 1
                 else:
@@ -546,7 +546,7 @@
                     j = length   # take all the rest of the string
                 else:
                     j = i + 1
-                    while j < length and not value[j].isspace():
+                    while j < length and not self._isspace(value[j]):
                         j += 1
                     maxsplit -= 1   # NB. if it's already < 0, it stays < 0
 
@@ -575,7 +575,7 @@
             while True:
                 # starting from the end, find the end of the next word
                 while i >= 0:
-                    if not value[i].isspace():
+                    if not self._isspace(value[i]):
                         break   # found
                     i -= 1
                 else:
@@ -587,7 +587,7 @@
                     j = -1   # take all the rest of the string
                 else:
                     j = i - 1
-                    while j >= 0 and not value[j].isspace():
+                    while j >= 0 and not self._isspace(value[j]):
                         j -= 1
                     maxsplit -= 1   # NB. if it's already < 0, it stays < 0
 
@@ -692,11 +692,11 @@
 
         if left:
             #print "while %d < %d and -%s- in -%s-:"%(lpos, rpos, value[lpos],w_chars)
-            while lpos < rpos and value[lpos].isspace():
+            while lpos < rpos and self._isspace(value[lpos]):
                lpos += 1
 
         if right:
-            while rpos > lpos and value[rpos - 1].isspace():
+            while rpos > lpos and self._isspace(value[rpos - 1]):
                rpos -= 1
 
         assert rpos >= lpos    # annotator hint, don't remove
diff --git a/pypy/objspace/std/unicodeobject.py b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -89,25 +89,25 @@
     _builder = UnicodeBuilder
 
     def _isupper(self, ch):
-        return ch.isupper()
+        return unicodedb.isupper(ord(ch))
 
     def _islower(self, ch):
-        return ch.islower()
+        return unicodedb.islower(ord(ch))
 
     def _istitle(self, ch):
-        return ch.istitle()
+        return unicodedb.istitle(ord(ch))
 
     def _isspace(self, ch):
-        return ch.isspace()
+        return unicodedb.isspace(ord(ch))
 
     def _isalpha(self, ch):
-        return ch.isalpha()
+        return unicodedb.isalpha(ord(ch))
 
     def _isalnum(self, ch):
-        return ch.isalnum()
+        return unicodedb.isalnum(ord(ch))
 
     def _isdigit(self, ch):
-        return ch.isdigit()
+        return unicodedb.isdigit(ord(ch))
 
     def _iscased(self, ch):
         return unicodedb.iscased(ord(ch))


More information about the pypy-commit mailing list