Merge pull request #349 from adamantike/misc/add-FilterMap-util

misc: Add FilterMapSlice util
This commit is contained in:
Drew Weymouth
2024-03-19 05:52:41 -07:00
committed by GitHub
2 changed files with 17 additions and 10 deletions
+13
View File
@@ -31,6 +31,19 @@ func MapSlice[T any, U any](ts []T, f func(T) U) []U {
return result
}
func FilterMapSlice[T any, U any](ts []T, f func(T) (U, bool)) []U {
if ts == nil {
return nil
}
result := make([]U, 0)
for _, t := range ts {
if u, ok := f(t); ok {
result = append(result, u)
}
}
return result
}
func Reversed[T any](ts []T) []T {
if ts == nil {
return nil
+4 -10
View File
@@ -18,21 +18,15 @@ func ToTrackListModels(trs []*mediaprovider.Track) []*TrackListModel {
})
}
func SelectedTrackModels(tracks []*TrackListModel) []*TrackListModel {
return sharedutil.FilterSlice(tracks, func(tm *TrackListModel) bool {
return tm.Selected
})
}
func SelectedTracks(tracks []*TrackListModel) []*mediaprovider.Track {
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) *mediaprovider.Track {
return tm.Track
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (*mediaprovider.Track, bool) {
return tm.Track, tm.Selected
})
}
func SelectedTrackIDs(tracks []*TrackListModel) []string {
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) string {
return tm.Track.ID
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (string, bool) {
return tm.Track.ID, tm.Selected
})
}