X-Git-Url: https://git.korewanetadesu.com/?p=python-collate.git;a=blobdiff_plain;f=collate%2F__init__.py;h=7e89fe653828ce4a010f3bb9f31fe3b2abe671af;hp=1d48178845a7b886e908087901dce2b1e0640034;hb=2a37219e2d9c0fe58e78d987a21f6e37cfd33940;hpb=c02c5c3c54d35e7d5836adf54aadac1f79906f05 diff --git a/collate/__init__.py b/collate/__init__.py index 1d48178..7e89fe6 100644 --- a/collate/__init__.py +++ b/collate/__init__.py @@ -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()