initial commit
This commit is contained in:
59
utils.go
Normal file
59
utils.go
Normal file
@ -0,0 +1,59 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"git.tordarus.net/nyaanime/model"
|
||||
"git.tordarus.net/tordarus/anilist"
|
||||
"git.tordarus.net/tordarus/slices"
|
||||
"git.tordarus.net/tordarus/tprint"
|
||||
)
|
||||
|
||||
var AllMediaListStatuses = []anilist.MediaListStatus{
|
||||
anilist.MediaListStatusCurrent,
|
||||
anilist.MediaListStatusPlanning,
|
||||
anilist.MediaListStatusCompleted,
|
||||
anilist.MediaListStatusDropped,
|
||||
anilist.MediaListStatusPaused,
|
||||
anilist.MediaListStatusRepeating,
|
||||
}
|
||||
|
||||
func ParseMediaListStatus(str string) (anilist.MediaListStatus, error) {
|
||||
s := anilist.MediaListStatus(strings.ToUpper(str))
|
||||
|
||||
allStatusesStr := slices.Map(AllMediaListStatuses, func(status anilist.MediaListStatus) string {
|
||||
return string(status)
|
||||
})
|
||||
|
||||
if !slices.Contains(AllMediaListStatuses, s) {
|
||||
return s, ErrInvalidAnimeStatus.New(s, strings.Join(allStatusesStr, ","))
|
||||
}
|
||||
|
||||
return s, nil
|
||||
}
|
||||
|
||||
func Map2Table[K comparable](title string, m map[K]int) string {
|
||||
table := tprint.NewTable(title, "priority")
|
||||
|
||||
entries := make([]model.Pair[K, int], 0, len(m))
|
||||
for name, priority := range m {
|
||||
entries = append(entries, model.Pair[K, int]{First: name, Second: priority})
|
||||
}
|
||||
sort.Slice(entries, func(i, j int) bool { return entries[i].Second > entries[j].Second })
|
||||
|
||||
for _, entry := range entries {
|
||||
table.AddRow(entry.First, entry.Second)
|
||||
}
|
||||
|
||||
return table.String()
|
||||
}
|
||||
|
||||
func PrintPriorityTables() {
|
||||
fmt.Println("generated priority values:")
|
||||
fmt.Print(Map2Table("language", PreferredLanguages))
|
||||
fmt.Print(Map2Table("subtitle", PreferredSubtitles))
|
||||
fmt.Print(Map2Table("resolution", PreferredResolutions))
|
||||
fmt.Println()
|
||||
}
|
Reference in New Issue
Block a user