forked from openlp/openlp
Pulled natural sorting methods out from the try (no real reason for them to be in there) and moved "try_int" to outside the other method (then it is only compiled once).
This commit is contained in:
parent
14088e71bb
commit
4e03451db7
87
setup.py
87
setup.py
@ -31,50 +31,53 @@ from setuptools import setup, find_packages
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
VERSION_FILE = 'openlp/.version'
|
VERSION_FILE = 'openlp/.version'
|
||||||
|
SPLIT_ALPHA_DIGITS = re.compile(r'(\d+|\D+)')
|
||||||
|
|
||||||
|
def try_int(s):
|
||||||
|
"""
|
||||||
|
Convert string s to an integer if possible. Fail silently and return
|
||||||
|
the string as-is if it isn't an integer.
|
||||||
|
|
||||||
|
``s``
|
||||||
|
The string to try to convert.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return int(s)
|
||||||
|
except Exception:
|
||||||
|
return s
|
||||||
|
|
||||||
|
def natural_sort_key(s):
|
||||||
|
"""
|
||||||
|
Return a tuple by which s is sorted.
|
||||||
|
|
||||||
|
``s``
|
||||||
|
A string value from the list we want to sort.
|
||||||
|
"""
|
||||||
|
return map(try_int, SPLIT_ALPHA_DIGITS.findall(s))
|
||||||
|
|
||||||
|
def natural_compare(a, b):
|
||||||
|
"""
|
||||||
|
Compare two strings naturally and return the result.
|
||||||
|
|
||||||
|
``a``
|
||||||
|
A string to compare.
|
||||||
|
|
||||||
|
``b``
|
||||||
|
A string to compare.
|
||||||
|
"""
|
||||||
|
return cmp(natural_sort_key(a), natural_sort_key(b))
|
||||||
|
|
||||||
|
def natural_sort(seq, compare=natural_compare):
|
||||||
|
"""
|
||||||
|
Returns a copy of seq, sorted by natural string sort.
|
||||||
|
"""
|
||||||
|
import copy
|
||||||
|
temp = copy.copy(seq)
|
||||||
|
temp.sort(compare)
|
||||||
|
return temp
|
||||||
|
|
||||||
try:
|
try:
|
||||||
def natural_sort_key(s):
|
# Try to import Bazaar
|
||||||
"""
|
|
||||||
Return a tuple by which s is sorted.
|
|
||||||
|
|
||||||
``s``
|
|
||||||
A string value from the list we want to sort.
|
|
||||||
"""
|
|
||||||
def try_int(s):
|
|
||||||
"""
|
|
||||||
Convert string s to an integer if possible. Fail silently and return
|
|
||||||
the string as-is if it isn't an integer.
|
|
||||||
|
|
||||||
``s``
|
|
||||||
The string to try to convert.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return int(s)
|
|
||||||
except:
|
|
||||||
return s
|
|
||||||
return map(try_int, re.findall(r'(\d+|\D+)', s))
|
|
||||||
|
|
||||||
def natural_compare(a, b):
|
|
||||||
"""
|
|
||||||
Compare two strings naturally and return the result.
|
|
||||||
|
|
||||||
``a``
|
|
||||||
A string to compare.
|
|
||||||
|
|
||||||
``b``
|
|
||||||
A string to compare.
|
|
||||||
"""
|
|
||||||
return cmp(natural_sort_key(a), natural_sort_key(b))
|
|
||||||
|
|
||||||
def natural_sort(seq, compare=natural_compare):
|
|
||||||
"""
|
|
||||||
Returns a copy of seq, sorted by natural string sort.
|
|
||||||
"""
|
|
||||||
import copy
|
|
||||||
temp = copy.copy(seq)
|
|
||||||
temp.sort(compare)
|
|
||||||
return temp
|
|
||||||
|
|
||||||
from bzrlib.branch import Branch
|
from bzrlib.branch import Branch
|
||||||
b = Branch.open_containing('.')[0]
|
b = Branch.open_containing('.')[0]
|
||||||
b.lock_read()
|
b.lock_read()
|
||||||
|
Loading…
Reference in New Issue
Block a user