fix: Handle sorting for accented strings
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
package subsonic
|
package subsonic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"cmp"
|
|
||||||
"log"
|
"log"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
|
||||||
|
"golang.org/x/text/collate"
|
||||||
|
"golang.org/x/text/language"
|
||||||
|
|
||||||
"github.com/dweymouth/go-subsonic/subsonic"
|
"github.com/dweymouth/go-subsonic/subsonic"
|
||||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||||
@@ -30,8 +31,9 @@ func (s *subsonicMediaProvider) IterateArtists(sortOrder string) mediaprovider.A
|
|||||||
case ArtistSortNameAZ:
|
case ArtistSortNameAZ:
|
||||||
return s.baseArtistIterFromSimpleSortOrder(
|
return s.baseArtistIterFromSimpleSortOrder(
|
||||||
func(artists []*subsonic.ArtistID3) []*subsonic.ArtistID3 {
|
func(artists []*subsonic.ArtistID3) []*subsonic.ArtistID3 {
|
||||||
|
c := collate.New(language.English, collate.Loose)
|
||||||
slices.SortFunc(artists, func(a, b *subsonic.ArtistID3) int {
|
slices.SortFunc(artists, func(a, b *subsonic.ArtistID3) int {
|
||||||
return cmp.Compare(strings.ToLower(a.Name), strings.ToLower(b.Name))
|
return c.CompareString(a.Name, b.Name)
|
||||||
})
|
})
|
||||||
return artists
|
return artists
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ require (
|
|||||||
github.com/quarckster/go-mpris-server v1.0.3
|
github.com/quarckster/go-mpris-server v1.0.3
|
||||||
github.com/zalando/go-keyring v0.2.1
|
github.com/zalando/go-keyring v0.2.1
|
||||||
golang.org/x/net v0.17.0
|
golang.org/x/net v0.17.0
|
||||||
|
golang.org/x/text v0.14.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@@ -42,7 +43,6 @@ require (
|
|||||||
golang.org/x/image v0.14.0 // indirect
|
golang.org/x/image v0.14.0 // indirect
|
||||||
golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
|
golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
|
||||||
golang.org/x/sys v0.13.0 // indirect
|
golang.org/x/sys v0.13.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
|
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user