[Zope-dev] case insensitive sorts
Chris Withers
chrisw@nipltd.com
Wed, 03 Jan 2001 10:55:05 +0000
Toby Dickenson wrote:
>
> >(reasons of course would be helpful, particularly if you want it to stay
> >like it is ;-)
>
> I noticed the smiley, so Im not sure how serious the suggestion is.
It was serious, the smiley was 'cos I couldn't understand why anyone
would want it to stay like it is :-)
> 1. Python doesnt distinguish between 8-bit-strings and byte arrays.
> (for example, ZODB uses 8-byte-long 'strings' as oids). Do you want a
> casewise sort for byte arrays too?
I don't know. Show me why this is bad :-)
> 2. 'sort' uses 'cmp'; so effectively you are asking for string's cmp
> to be case insensitve. Can you demonstrate a case-sensitive collation
> function that is as simple as your case-insensitive one:
> >def _default_sort(x,y):
> > return cmp(string.lower(x),string.lower(y))
I see your point. I guess cmp is implemented in C?
How about a third optional argument?
def _case_sensitive_sort(x,y):
return cmp(x,y,string.CASE_SENSITIVE)
def _default_sort(x,y):
return cmp(x,y)
> 3. ZCatalog stores objects in a pre-sorted order. Changing the sort
> order of any object (not just strings) would break *all* existing
> ZCatalog instances that store mixed case strings. (and other
> applications too - the python language reference documents that this
> assmption is safe at least until python3k)
Sorry, don't qutie follow this... explanation for a simpleton? ;-)
cheers,
Chris