mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add a function to generation collation order for partitioning
This commit is contained in:
parent
ff32d7c4f8
commit
79a6ab5d94
@ -13,7 +13,7 @@ from calibre.utils.config_base import tweaks
|
|||||||
from calibre_extensions import icu as _icu
|
from calibre_extensions import icu as _icu
|
||||||
from polyglot.builtins import cmp
|
from polyglot.builtins import cmp
|
||||||
|
|
||||||
_locale = _collator = _primary_collator = _sort_collator = _numeric_collator = _case_sensitive_collator = None
|
_locale = _collator = _primary_collator = _sort_collator = _non_numeric_sort_collator = _numeric_collator = _case_sensitive_collator = None
|
||||||
cmp
|
cmp
|
||||||
|
|
||||||
_none = ''
|
_none = ''
|
||||||
@ -67,8 +67,8 @@ def collator():
|
|||||||
|
|
||||||
|
|
||||||
def change_locale(locale=None):
|
def change_locale(locale=None):
|
||||||
global _locale, _collator, _primary_collator, _sort_collator, _numeric_collator, _case_sensitive_collator
|
global _locale, _collator, _primary_collator, _sort_collator, _numeric_collator, _case_sensitive_collator, _non_numeric_sort_collator
|
||||||
_collator = _primary_collator = _sort_collator = _numeric_collator = _case_sensitive_collator = None
|
_collator = _primary_collator = _sort_collator = _numeric_collator = _case_sensitive_collator = _non_numeric_sort_collator = None
|
||||||
_locale = locale
|
_locale = locale
|
||||||
|
|
||||||
|
|
||||||
@ -91,6 +91,16 @@ def sort_collator():
|
|||||||
return _sort_collator
|
return _sort_collator
|
||||||
|
|
||||||
|
|
||||||
|
def non_numeric_sort_collator():
|
||||||
|
'Ignores case differences only'
|
||||||
|
global _non_numeric_sort_collator
|
||||||
|
if _non_numeric_sort_collator is None:
|
||||||
|
_non_numeric_sort_collator = collator().clone()
|
||||||
|
_non_numeric_sort_collator.strength = _icu.UCOL_SECONDARY
|
||||||
|
_sort_collator.numeric = False
|
||||||
|
return _sort_collator
|
||||||
|
|
||||||
|
|
||||||
def numeric_collator():
|
def numeric_collator():
|
||||||
'Uses natural sorting for numbers inside strings so something2 will sort before something10'
|
'Uses natural sorting for numbers inside strings so something2 will sort before something10'
|
||||||
global _numeric_collator
|
global _numeric_collator
|
||||||
@ -191,6 +201,7 @@ numeric_sort_key = make_sort_key_func(numeric_collator)
|
|||||||
primary_sort_key = make_sort_key_func(primary_collator)
|
primary_sort_key = make_sort_key_func(primary_collator)
|
||||||
case_sensitive_sort_key = make_sort_key_func(case_sensitive_collator)
|
case_sensitive_sort_key = make_sort_key_func(case_sensitive_collator)
|
||||||
collation_order = make_sort_key_func(sort_collator, 'collation_order')
|
collation_order = make_sort_key_func(sort_collator, 'collation_order')
|
||||||
|
collation_order_for_partitioning = make_sort_key_func(non_numeric_sort_collator, 'collation_order')
|
||||||
|
|
||||||
strcmp = make_two_arg_func(sort_collator)
|
strcmp = make_two_arg_func(sort_collator)
|
||||||
case_sensitive_strcmp = make_two_arg_func(case_sensitive_collator)
|
case_sensitive_strcmp = make_two_arg_func(case_sensitive_collator)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user