Author: touilleMan <[email protected]>
Branch: py3k
Changeset: r85842:d93d0a6c41f9
Date: 2016-07-24 15:46 +0200
http://bitbucket.org/pypy/pypy/changeset/d93d0a6c41f9/
Log: Add missing str.casefold method.
diff --git a/pypy/objspace/std/test/test_unicodeobject.py
b/pypy/objspace/std/test/test_unicodeobject.py
--- a/pypy/objspace/std/test/test_unicodeobject.py
+++ b/pypy/objspace/std/test/test_unicodeobject.py
@@ -976,3 +976,12 @@
raises(TypeError, "u''.encode(None)")
raises(TypeError, "str(b'', encoding=None)")
raises(TypeError, 'u"".encode("utf-8", None)')
+
+ def test_casefold(self):
+ assert 'hello'.casefold() == 'hello'
+ assert 'hELlo'.casefold() == 'hello'
+ assert 'ß'.casefold() == 'ss'
+ assert 'fi'.casefold() == 'fi'
+ assert '\u03a3'.casefold() == '\u03c3'
+ assert 'A\u0345\u03a3'.casefold() == 'a\u03b9\u03c3'
+ assert '\u00b5'.casefold() == '\u03bc'
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
@@ -414,6 +414,19 @@
def _join_check_item(self, space, w_obj):
return not space.isinstance_w(w_obj, space.w_unicode)
+ def descr_casefold(self, space):
+ value = self._val(space)
+ builder = self._builder(len(value))
+ for c in value:
+ c_ord = ord(c)
+ folded = unicodedb.casefold_lookup(c_ord)
+ if folded is None:
+ builder.append(unichr(unicodedb.tolower(c_ord)))
+ else:
+ for r in folded:
+ builder.append(unichr(r))
+ return self._new(builder.build())
+
def descr_isdecimal(self, space):
return self._is_generic(space, '_isdecimal')
@@ -815,6 +828,12 @@
and there is at least one character in S, False otherwise.
"""
+ def casefold():
+ """S.casefold() -> str
+
+ Return a version of S suitable for caseless comparisons.
+ """
+
def isdecimal():
"""S.isdecimal() -> bool
@@ -1105,6 +1124,8 @@
capitalize = interp2app(W_UnicodeObject.descr_capitalize,
doc=UnicodeDocstrings.capitalize.__doc__),
+ casefold = interp2app(W_UnicodeObject.descr_casefold,
+ doc=UnicodeDocstrings.casefold.__doc__),
center = interp2app(W_UnicodeObject.descr_center,
doc=UnicodeDocstrings.center.__doc__),
count = interp2app(W_UnicodeObject.descr_count,
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit