navidrome/utils/strings.go

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

73 lines
1.5 KiB
Go
Raw Normal View History

2016-02-29 19:56:09 +01:00
package utils
import (
2016-03-02 19:18:39 +01:00
"strings"
2016-03-24 14:51:50 +01:00
2020-01-24 01:44:08 +01:00
"github.com/navidrome/navidrome/conf"
2016-02-29 19:56:09 +01:00
)
func NoArticle(name string) string {
2020-01-24 07:29:31 +01:00
articles := strings.Split(conf.Server.IgnoredArticles, " ")
2016-02-29 19:56:09 +01:00
for _, a := range articles {
2016-03-02 19:18:39 +01:00
n := strings.TrimPrefix(name, a+" ")
if n != name {
2016-02-29 19:56:09 +01:00
return n
}
}
return name
}
func InsertString(slice []string, value string, index int) []string {
return append(slice[:index], append([]string{value}, slice[index:]...)...)
2020-06-05 01:05:41 +02:00
}
func RemoveString(slice []string, index int) []string {
return append(slice[:index], slice[index+1:]...)
2020-06-05 01:05:41 +02:00
}
func MoveString(slice []string, srcIndex int, dstIndex int) []string {
value := slice[srcIndex]
return InsertString(RemoveString(slice, srcIndex), value, dstIndex)
2020-06-05 01:05:41 +02:00
}
2020-06-11 23:36:09 +02:00
func BreakUpStringSlice(items []string, chunkSize int) [][]string {
numTracks := len(items)
2020-06-11 23:36:09 +02:00
var chunks [][]string
for i := 0; i < numTracks; i += chunkSize {
end := i + chunkSize
if end > numTracks {
end = numTracks
}
chunks = append(chunks, items[i:end])
2020-06-11 23:36:09 +02:00
}
return chunks
}
func RangeByChunks(items []string, chunkSize int, cb func([]string) error) error {
chunks := BreakUpStringSlice(items, chunkSize)
for _, chunk := range chunks {
err := cb(chunk)
if err != nil {
return err
}
}
return nil
}
func LongestCommonPrefix(list []string) string {
if len(list) == 0 {
return ""
}
for l := 0; l < len(list[0]); l++ {
c := list[0][l]
for i := 1; i < len(list); i++ {
if l >= len(list[i]) || list[i][l] != c {
return list[i][0:l]
}
}
}
return list[0]
}