1
0

util.go 748 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package util
  2. import (
  3. "slices"
  4. "strings"
  5. )
  6. func StandardizeBindingsArray(arr []string) []string {
  7. new := []string{}
  8. for _, s := range arr {
  9. new = append(new, StandardizeBinding(s))
  10. }
  11. return new
  12. }
  13. func StandardizeBinding(binding string) string {
  14. arr := strings.Split(binding, "+")
  15. for i, s := range arr {
  16. lower := strings.ToLower(s)
  17. lower = strings.ReplaceAll(lower, "backtab", "shift+tab")
  18. arr[i] = lower
  19. if strings.HasPrefix(lower, "rune[") && strings.HasSuffix(lower, "]") {
  20. arr[i] = lower[5 : len(s)-1]
  21. }
  22. }
  23. slices.Sort(arr)
  24. return strings.ToLower(strings.Join(arr, "+"))
  25. }
  26. func NonNilLen[T any](slice []T) int {
  27. count := 0
  28. for _, item := range slice {
  29. if any(item) != nil {
  30. count++
  31. }
  32. }
  33. return count
  34. }