6784a978c2b106cbedca95dcec4d4c37d7ad168e
4 import collate
._abcollator
6 class Collator(collate
._abcollator
.Collator
):
7 def __init__(self
, locale_code
, strict
=False):
9 self
.__encoding
= locale_code
.split(".")[1]
11 self
.__encoding
= locale_code
.split(sys
.getdefaultencoding())
13 locale
.setlocale(locale
.LC_COLLATE
, locale_code
)
14 except locale
.Error
as err
:
16 raise collate
.errors
.InvalidLocaleError(str(err
))
19 locale
.LC_COLLATE
, locale
.getdefaultlocale()[0])
20 except locale
.Error
as err
:
21 raise collate
.errors
.InvalidLocaleError(str(err
))
22 self
.locale
= locale
.getdefaultlocale()[0]
24 def key(self
, string
):
26 return locale
.strxfrm(string
)
27 except UnicodeEncodeError:
28 return locale
.strxfrm(string
.encode(self
.__encoding
, "replace"))
30 def cmp(self
, string1
, string2
):
31 if isinstance(string1
, str):
32 string1
= string1
.decode(self
.__encoding
, "replace")
33 if isinstance(string2
, str):
34 string2
= string2
.decode(self
.__encoding
, "replace")
35 return locale
.strcoll(string1
, string2
)