24 lines
632 B
Go
24 lines
632 B
Go
// nolint:revive
|
|
package util
|
|
|
|
import (
|
|
"sort"
|
|
|
|
"golang.org/x/text/collate"
|
|
"golang.org/x/text/language"
|
|
)
|
|
|
|
// SortCollateStringSlice is used to sort a slice of strings if the language specific order of caracters is
|
|
// important for the order of the string.
|
|
// ! The slice passed will be changed.
|
|
func SortCollateStringSlice(slice []string, lang language.Tag, options ...collate.Option) {
|
|
if len(options) == 0 {
|
|
options = []collate.Option{collate.IgnoreCase, collate.IgnoreWidth}
|
|
}
|
|
coll := collate.New(lang, options...)
|
|
|
|
sort.Slice(slice, func(i int, j int) bool {
|
|
return coll.CompareString(slice[i], slice[j]) < 0
|
|
})
|
|
}
|