- def sortemekey(self, string):
- words = map(collate._strings.numeric, self.sortemes(string))
- words = [(i, self.key(word)) for (i, word) in words]
- return words
+ 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))