From d5fa5cf07d1a50cd953a3f231ec704914e2cb99a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Jul 2012 20:38:03 +0530 Subject: [PATCH] Fix ICU contractions --- src/calibre/utils/icu.c | 4 ++-- src/calibre/utils/icu.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/icu.c b/src/calibre/utils/icu.c index f306618577..33c8b456f4 100644 --- a/src/calibre/utils/icu.c +++ b/src/calibre/utils/icu.c @@ -241,7 +241,7 @@ icu_Collator_contractions(icu_Collator *self, PyObject *args, PyObject *kwargs) if (self->contractions == NULL) { self->contractions = uset_open(1, 0); if (self->contractions == NULL) return PyErr_NoMemory(); - ucol_getContractionsAndExpansions(self->collator, self->contractions, NULL, 0, &status); + self->contractions = ucol_getTailoredSet(self->collator, &status); } status = U_ZERO_ERROR; @@ -290,7 +290,7 @@ icu_Collator_span_contractions(icu_Collator *self, PyObject *args, PyObject *kwa if (self->contractions == NULL) { self->contractions = uset_open(1, 0); if (self->contractions == NULL) return PyErr_NoMemory(); - ucol_getContractionsAndExpansions(self->collator, self->contractions, NULL, 0, &status); + self->contractions = ucol_getTailoredSet(self->collator, &status); } status = U_ZERO_ERROR; diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 5da16f6a95..46d3c93206 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -315,6 +315,14 @@ pĂȘchĂ©''' print 'Primary collation in Spanish locale failed' return + print '\nTesting contractions' + c = _icu.Collator('cs') + if icu_contractions(c) != frozenset([u'Z\u030c', u'z\u030c', u'Ch', + u'C\u030c', u'ch', u'cH', u'c\u030c', u's\u030c', u'r\u030c', u'CH', + u'S\u030c', u'R\u030c']): + print 'Contractions for the Czech language failed' + return + # }}} if __name__ == '__main__':