diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/slices.go')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/slices.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/slices.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/slices.go new file mode 100644 index 0000000..b636ddc --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/slices.go @@ -0,0 +1,56 @@ +package utils + +func Filter[T any](items []T, predicate func(T) bool) []T { + var result []T + for _, item := range items { + if predicate(item) { + result = append(result, item) + } + } + return result +} + +func Find[T any](items []T, predicate func(T) bool) (T, bool) { + for _, item := range items { + if predicate(item) { + return item, true + } + } + var zero T + return zero, false +} + +func Map[T, U any](items []T, transform func(T) U) []U { + result := make([]U, len(items)) + for i, item := range items { + result[i] = transform(item) + } + return result +} + +func Contains[T comparable](items []T, target T) bool { + for _, item := range items { + if item == target { + return true + } + } + return false +} + +func Any[T any](items []T, predicate func(T) bool) bool { + for _, item := range items { + if predicate(item) { + return true + } + } + return false +} + +func All[T any](items []T, predicate func(T) bool) bool { + for _, item := range items { + if !predicate(item) { + return false + } + } + return true +} |