Typo.
[python-collate.git] / collate / __init__.py
index 1d48178..7e89fe6 100644 (file)
@@ -1,44 +1,45 @@
-import locale
-
 import collate.errors
+import collate._locale
 
+try:
+    import collate.codepoint as default
+except ImportError:
+    pass
 try:
     import collate.syslocale as default
-    import collate.uca as default
+except ImportError:
+    pass
+try:
     import collate.icu as default
 except ImportError:
     pass
 
 collator = None
 
-def set_locale(locale_code):
+def set_default(backend=None, locale=None, encoding=None):
     global collator
-
-    if collator is None or collator.locale != locale_code:
-        for code in [locale_code,
-                     locale_code.split("_")[0],
-                     locale.getdefaultlocale()[0],
-                     locale.getdefaultlocale()[0].split("_")[0],
-                     None]:
-            try:
-                collator = default.Collator(code)
-            except collate.errors.InvalidLocaleError:
-                pass
-            else:
-                break
+    global default
+
+    if backend is None:
+        backend = default
+    locales = collate._locale.localelist(locale)
+    c = None
+    for locale in locales:
+        locale, encoding_ = collate._locale.getpair(locale, encoding)
+        try:
+            c = backend.Collator(locale, encoding_)
+        except collate.errors.InvalidLocaleError:
+            pass
         else:
-            raise collate.errors.InvalidLocaleError(locale_code)
-
-def get_locale():
-    return collator.locale
-
-def set_backend(backend):
-    pass
+            break
+    if c is not None:
+        collator = c
+        default = backend
 
 def key(string):
     return collator.key(string)
 
-def cmp(string1, string2):
-    return collator.cmp(string1, string2)
+def cmp(a, b):
+    return collator.cmp(a, b)
 
-set_locale(locale.getdefaultlocale()[0])
+set_default()