> aAbBcCdDeEfF  .. etc with everything outside the letter space sorting
> 'naturally' and coming after the letters (I actually don't care too much about
> the last bit honestly they can go where they like as long as it's outside the
> alphabet range).
> 
> so
> 
> myClass               comes before
> MyClass               which comes before
> yourClass             which comes before
> YourClass

I had to solve this for a different system (sadly, I can't share code) and the 
first problem you face is that you need to be more specific with your rules 
than what you have.  We sorted A before a, but have the following rules:

         * "A"   < "a"
         * "Ab"  > "a"
         * "Ab"  > "aa"
         * "Ab"  < "ab"
         * "Ab"  < "ad"
         * "Abc" > "ab"

and it turned out that you can't compare one character at a time.  Sometimes 
you need to look further along the string to decide what your relative orders 
are.

(Note, our compare also handled numerics inside the string as well. This was 
all complicated enormously because our users think that "File-1" < "File-2" but 
"-2" < "-1" ... think about it)

Our approach was to skip over "ambiguous" matches (ie, treat "A"=="a") until 
you find a difference, or decide that the strings are the same.  If the tails 
are different, return that difference.  Otherwise return the difference in the 
*first* ambiguous match you found.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to