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.
|
|
|
package cluster
|
|
|
|
|
|
|
|
import "sort"
|
|
|
|
|
|
|
|
// SortRegions sorts regions. first by length those 3-character
|
|
|
|
// or shorter, and then by length. It's mostly aimed at
|
|
|
|
// supporting ISO-3166 order
|
|
|
|
func SortRegions(regions []string) []string {
|
|
|
|
sort.Slice(regions, func(i, j int) bool {
|
|
|
|
r1, r2 := regions[i], regions[j]
|
|
|
|
return regionLess(r1, r2)
|
|
|
|
})
|
|
|
|
|
|
|
|
return regions
|
|
|
|
}
|
|
|
|
|
|
|
|
func regionLess(r1, r2 string) bool {
|
|
|
|
switch {
|
|
|
|
case len(r1) < 4:
|
|
|
|
switch {
|
|
|
|
case len(r1) < len(r2):
|
|
|
|
return true
|
|
|
|
case len(r1) > len(r2):
|
|
|
|
return false
|
|
|
|
default:
|
|
|
|
return r1 < r2
|
|
|
|
}
|
|
|
|
case len(r2) < 4:
|
|
|
|
return false
|
|
|
|
default:
|
|
|
|
return r1 < r2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Cluster) sortRegions() {
|
|
|
|
sort.Slice(m.Regions, func(i, j int) bool {
|
|
|
|
r1 := m.Regions[i].Name
|
|
|
|
r2 := m.Regions[j].Name
|
|
|
|
return regionLess(r1, r2)
|
|
|
|
})
|
|
|
|
}
|