Author: Manuel Jacob Branch: refactor-str-types Changeset: r64784:8c06f1b5cde7 Date: 2013-06-04 21:34 +0200 http://bitbucket.org/pypy/pypy/changeset/8c06f1b5cde7/
Log: Implement title() method. diff --git a/pypy/objspace/std/bytesobject.py b/pypy/objspace/std/bytesobject.py --- a/pypy/objspace/std/bytesobject.py +++ b/pypy/objspace/std/bytesobject.py @@ -117,6 +117,8 @@ def _isdigit(self, ch): return ch.isdigit() + _iscased = _isalpha + def _upper(self, ch): if ch.islower(): o = ord(ch) - 32 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 @@ -776,22 +776,19 @@ return space.wrap(builder.build()) def descr_title(self, space): - # XXX just to pass the test - return space.wrap(self._val().title()) - selfval = self._val() if len(selfval) == 0: return self builder = self._builder(len(selfval)) - prev_letter = ' ' - for pos in range(len(input)): - ch = input[pos] - if not prev_letter.isalpha(): + previous_is_cased = False + for pos in range(len(selfval)): + ch = selfval[pos] + if not previous_is_cased: builder.append(self._upper(ch)) else: builder.append(self._lower(ch)) - prev_letter = ch + previous_is_cased = self._iscased(ch) return space.wrap(builder.build()) DEFAULT_NOOP_TABLE = ''.join([chr(i) for i in range(256)]) 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 @@ -110,6 +110,9 @@ def _isdigit(self, ch): return ch.isdigit() + def _iscased(self, ch): + return unicodedb.iscased(ord(ch)) + def _upper(self, ch): return unichr(unicodedb.toupper(ord(ch))) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit