corresponding string method. Added tests for this too.
Patch written by Marc-Andre Lemburg. Copyright assigned to Guido van Rossum.
test('capitalize', ' hello ', ' hello ')
test('capitalize', 'hello ', 'Hello ')
+ test('capitalize', 'aaaa', 'Aaaa')
+ test('capitalize', 'AaAa', 'Aaaa')
test('count', 'aaa', 3, 'a')
test('count', 'aaa', 0, 'b')
test('capitalize', u' hello ', u' hello ')
test('capitalize', u'hello ', u'Hello ')
+test('capitalize', u'aaaa', u'Aaaa')
+test('capitalize', u'AaAa', u'Aaaa')
test('count', u'aaa', 3, u'a')
test('count', u'aaa', 0, u'b')
static
int fixcapitalize(PyUnicodeObject *self)
{
- if (self->length > 0 && Py_UNICODE_ISLOWER(self->str[0])) {
- self->str[0] = Py_UNICODE_TOUPPER(self->str[0]);
- return 1;
+ int len = self->length;
+ Py_UNICODE *s = self->str;
+ int status = 0;
+
+ if (len == 0)
+ return 0;
+ if (Py_UNICODE_ISLOWER(*s)) {
+ *s = Py_UNICODE_TOUPPER(*s);
+ status = 1;
}
- return 0;
+ s++;
+ while (--len > 0) {
+ if (Py_UNICODE_ISUPPER(*s)) {
+ *s = Py_UNICODE_TOLOWER(*s);
+ status = 1;
+ }
+ s++;
+ }
+ return status;
}
static