diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go new file mode 100644 index 0000000..347f791 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/themes/search.go @@ -0,0 +1,40 @@ +package themes + +import ( + "strings" + + "github.com/AvengeMedia/DankMaterialShell/core/internal/utils" +) + +func FuzzySearch(query string, themes []Theme) []Theme { + if query == "" { + return themes + } + + queryLower := strings.ToLower(query) + return utils.Filter(themes, func(t Theme) bool { + return fuzzyMatch(queryLower, strings.ToLower(t.Name)) || + fuzzyMatch(queryLower, strings.ToLower(t.Description)) || + fuzzyMatch(queryLower, strings.ToLower(t.Author)) + }) +} + +func fuzzyMatch(query, text string) bool { + queryIdx := 0 + for _, char := range text { + if queryIdx < len(query) && char == rune(query[queryIdx]) { + queryIdx++ + } + } + return queryIdx == len(query) +} + +func FindByIDOrName(idOrName string, themes []Theme) *Theme { + if t, found := utils.Find(themes, func(t Theme) bool { return t.ID == idOrName }); found { + return &t + } + if t, found := utils.Find(themes, func(t Theme) bool { return t.Name == idOrName }); found { + return &t + } + return nil +} |