|
|
|
@ -8,22 +8,34 @@ import "sort"
|
|
|
|
|
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) < 4: |
|
|
|
|
switch { |
|
|
|
|
case len(r1) < len(r2): |
|
|
|
|
return true |
|
|
|
|
case len(r1) > len(r2): |
|
|
|
|
return false |
|
|
|
|
default: |
|
|
|
|
return r1 < r2 |
|
|
|
|
} |
|
|
|
|
case len(r2) < 4: |
|
|
|
|
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) |
|
|
|
|
}) |
|
|
|
|
return regions |
|
|
|
|
} |
|
|
|
|