You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
520 B
29 lines
520 B
package cli |
|
|
|
import "unicode" |
|
|
|
// lexicographicLess compares strings alphabetically considering case. |
|
func lexicographicLess(i, j string) bool { |
|
iRunes := []rune(i) |
|
jRunes := []rune(j) |
|
|
|
lenShared := len(iRunes) |
|
if lenShared > len(jRunes) { |
|
lenShared = len(jRunes) |
|
} |
|
|
|
for index := 0; index < lenShared; index++ { |
|
ir := iRunes[index] |
|
jr := jRunes[index] |
|
|
|
if lir, ljr := unicode.ToLower(ir), unicode.ToLower(jr); lir != ljr { |
|
return lir < ljr |
|
} |
|
|
|
if ir != jr { |
|
return ir < jr |
|
} |
|
} |
|
|
|
return i < j |
|
}
|
|
|