Updates for new hosting.
[python-collate.git] / collate / syslocale.py
index b9f9b92..e48ee82 100644 (file)
@@ -12,15 +12,18 @@ locale of all previous collators and anything else using the system
 locale information.
 
 Use this collation backend if...
- - You are on a system without ICU or UCA datafiles for the locale,
-   and DUCET results are not acceptable.
+ - You are on a system without ICU.
 
 Avoid this backend if...
- - ICU or UCA support is available for the current locale.
+ - ICU is available for the current locale.
  - You are sorting strings from alphabets outside the primary locale.
  - You need to support collating multiple locales at once.
+ - You need the same results across multiple platforms.
 """
 
+__all__ = ["Collator"]
+
 import locale
 
 import collate.errors
@@ -31,10 +34,13 @@ class Collator(collate._abcollator.Collator):
     """C library locale-based collation."""
 
     def __init__(self, locale_code, encoding=None):
+        super(Collator, self).__init__(locale, encoding)
+        locale_code, encoding = collate._locale.getpair(locale_code, encoding)
         try:
-            locale.setlocale(locale.LC_COLLATE, locale_code)
+            setlocale = locale_code + "." + encoding
+            locale.setlocale(locale.LC_COLLATE, setlocale)
         except locale.Error:
-            raise collate.errors.InvalidLocaleError(locale_code)
+            raise collate.errors.InvalidLocaleError(setlocale)
         self.locale = locale.getlocale(locale.LC_COLLATE)[0]
         self.encoding = collate._locale.encoding(encoding)
 
@@ -47,19 +53,5 @@ class Collator(collate._abcollator.Collator):
         """
         try:
             return locale.strxfrm(string)
-        except UnicodeEncodeError:
-            return locale.strxfrm(string.encode(self.encoding, "replace"))
-
-    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 locale.strcoll(a, b)
-                                  
+        except UnicodeError:
+            return locale.strxfrm(string.str(self.encoding))