X-Git-Url: https://git.korewanetadesu.com/?p=python-collate.git;a=blobdiff_plain;f=collate%2F__init__.py;h=7e89fe653828ce4a010f3bb9f31fe3b2abe671af;hp=6d1806a0f0d11cd69a9ee3e4e5c5063eda122463;hb=2a37219e2d9c0fe58e78d987a21f6e37cfd33940;hpb=29f1f7e12a4ca6100b00dc0d32e84f82f530bcb4 diff --git a/collate/__init__.py b/collate/__init__.py index 6d1806a..7e89fe6 100644 --- a/collate/__init__.py +++ b/collate/__init__.py @@ -1,40 +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, strict=False): +def set_default(backend=None, locale=None, encoding=None): global collator - - if collator is None or collator.locale != locale_code: + 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: - collator = default.Collator(locale_code, strict) + c = backend.Collator(locale, encoding_) except collate.errors.InvalidLocaleError: - if strict: - raise - else: - default_locale = locale.getdefaultlocale()[0] - try: - collator = default.Collator(default_locale, strict) - except collate.errors.InvalidLocaleError: - if not collator: - raise - -def get_locale(): - return collator.locale - -def set_backend(backend, strict=False): - pass + pass + else: + break + if c is not None: + collator = c + default = backend def key(string): return collator.key(string) -set_locale(locale.getdefaultlocale()[0]) +def cmp(a, b): + return collator.cmp(a, b) + +set_default()