From 7256c9bf4e9be72c5cdef74463932c856055218d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 19 Mar 2014 21:05:41 +0530 Subject: [PATCH] Fix a regression in the previous release that broke downloading metadata for authors witha double initial such as R. A. Salvatore. Fixes #1294529 [Metadata download fails on author with 2 intials](https://bugs.launchpad.net/calibre/+bug/1294529) --- src/calibre/utils/icu.py | 6 +++++- src/calibre/utils/icu_test.py | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 6f335a5434..1c61d3e739 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -197,7 +197,11 @@ lower = _make_func(_change_case_template, 'lower', which='LOWER_CASE') title_case = _make_func(_change_case_template, 'title_case', which='TITLE_CASE') -capitalize = lambda x: upper(x[0]) + lower(x[1:]) +def capitalize(x): + try: + return upper(x[0]) + lower(x[1:]) + except (IndexError, TypeError, AttributeError): + return x find = _make_func(_strcmp_template, 'find', collator='_collator', collator_func='collator', func='find') diff --git a/src/calibre/utils/icu_test.py b/src/calibre/utils/icu_test.py index 3b2775e454..2c24348169 100644 --- a/src/calibre/utils/icu_test.py +++ b/src/calibre/utils/icu_test.py @@ -80,6 +80,8 @@ class TestICU(unittest.TestCase): from calibre.utils.titlecase import titlecase # Test corner cases self.ae('A', icu.upper(b'a')) + for x in ('', None, False, 1): + self.ae(x, icu.capitalize(x)) for x in ('a', 'Alice\'s code', 'macdonald\'s machIne', '02 the wars'): self.ae(icu.upper(x), x.upper())