"""
+__all__ = ["Collator"]
+
import collate._abcollator
import collate._locale
import collate.errors
"""ICU-based collation."""
def __init__(self, locale, encoding=None):
+ super(Collator, self).__init__(locale, encoding)
locale, encoding = collate._locale.getpair(locale, encoding)
icu_locale = "root" if locale == "C" else locale
self._collator = _icu.Collator(icu_locale)
def words(self, string):
"""Split the string along word boundries."""
- if isinstance(string, str):
- string = string.decode(self.encoding)
- words = self._breaker.words(string)
- return [w for w in words if not w.isspace()]
+ string = self.unicode(string)
+ return self._breaker.words(string)
def key(self, string):
"""Sort key for a string.
instance according to the 'encoding' attribute of the
Collator.
"""
- if isinstance(string, str):
- string = string.decode(self.encoding, 'replace')
+ string = self.unicode(string)
return self._collator.key(string)
- def cmp(self, a, b):
- """Return negative if a < b, zero if a == b, positive if a > b.
-
- If strs rather than unicodes are passed in, they are first
- decoded according to the 'encoding' attribute of the Collator.
- """
- if isinstance(a, str):
- a = a.decode(self.encoding, 'replace')
- if isinstance(b, str):
- b = b.decode(self.encoding, 'replace')
- return self._collator.cmp(a, b)