diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/plugins/search.go')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/plugins/search.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/plugins/search.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/plugins/search.go deleted file mode 100644 index 833158f..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/plugins/search.go +++ /dev/null @@ -1,91 +0,0 @@ -package plugins - -import ( - "sort" - "strings" - - "github.com/AvengeMedia/DankMaterialShell/core/internal/utils" -) - -func FuzzySearch(query string, plugins []Plugin) []Plugin { - if query == "" { - return plugins - } - - queryLower := strings.ToLower(query) - return utils.Filter(plugins, func(p Plugin) bool { - return fuzzyMatch(queryLower, strings.ToLower(p.Name)) || - fuzzyMatch(queryLower, strings.ToLower(p.Category)) || - fuzzyMatch(queryLower, strings.ToLower(p.Description)) || - fuzzyMatch(queryLower, strings.ToLower(p.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 FilterByCategory(category string, plugins []Plugin) []Plugin { - if category == "" { - return plugins - } - categoryLower := strings.ToLower(category) - return utils.Filter(plugins, func(p Plugin) bool { - return strings.ToLower(p.Category) == categoryLower - }) -} - -func FilterByCompositor(compositor string, plugins []Plugin) []Plugin { - if compositor == "" { - return plugins - } - compositorLower := strings.ToLower(compositor) - return utils.Filter(plugins, func(p Plugin) bool { - return utils.Any(p.Compositors, func(c string) bool { - return strings.ToLower(c) == compositorLower - }) - }) -} - -func FilterByCapability(capability string, plugins []Plugin) []Plugin { - if capability == "" { - return plugins - } - capabilityLower := strings.ToLower(capability) - return utils.Filter(plugins, func(p Plugin) bool { - return utils.Any(p.Capabilities, func(c string) bool { - return strings.ToLower(c) == capabilityLower - }) - }) -} - -func SortByFirstParty(plugins []Plugin) []Plugin { - sort.SliceStable(plugins, func(i, j int) bool { - if plugins[i].Featured != plugins[j].Featured { - return plugins[i].Featured - } - isFirstPartyI := strings.HasPrefix(plugins[i].Repo, "https://github.com/AvengeMedia") - isFirstPartyJ := strings.HasPrefix(plugins[j].Repo, "https://github.com/AvengeMedia") - if isFirstPartyI != isFirstPartyJ { - return isFirstPartyI - } - return false - }) - return plugins -} - -func FindByIDOrName(idOrName string, plugins []Plugin) *Plugin { - if p, found := utils.Find(plugins, func(p Plugin) bool { return p.ID == idOrName }); found { - return &p - } - if p, found := utils.Find(plugins, func(p Plugin) bool { return p.Name == idOrName }); found { - return &p - } - return nil -} |