X-Git-Url: https://git.korewanetadesu.com/?p=python-collate.git;a=blobdiff_plain;f=collate%2F_abcollator.py;h=12575eaed844603f039009a62262fe66b8d29ace;hp=0ae5d451f59defb65cb34fb4a2ca6b2f36152212;hb=92fc0878bc7b75741a3434d17310e390a9304e70;hpb=9a7cf6459c40d53b58634f2df56386bf52c12f7c diff --git a/collate/_abcollator.py b/collate/_abcollator.py index 0ae5d45..12575ea 100644 --- a/collate/_abcollator.py +++ b/collate/_abcollator.py @@ -1,32 +1,33 @@ import collate.strings class Collator(object): + encoding = "ascii" + def cmp(self, string1, string2): """Return negative if a < b, zero if a == b, positive if a > b.""" return cmp(self.key(string1), self.key(string2)) + def key(self, string): + return string + def words(self, string): """Split the string along word boundries.""" if isinstance(string, str): string = string.decode(self.encoding, 'replace') return string.split() - def sortemekey(self, string, invalid=float('inf')): + def sortemekey(self, string): """Return a key based on sortemes of a string. If the string is a str instance, it is decoded to a unicode instance according to the 'encoding' attribute of the Collator. """ - keys = [] if isinstance(string, str): string = string.decode(self.encoding, 'replace') - for sorteme in collate.strings.sortemes(string): - num, alpha = collate.strings.numeric(sorteme, invalid) - if num == invalid: - keys.append(self.key(alpha)) - else: - keys.append(num) + # Shove the sortkeyed original string on the end to resolve # ties intelligently. - return (keys, self.key(string)) + return (collate.strings.sortemes(string, self.key), + self.key(string)) +