mirror of
https://github.com/Jguer/yay.git
synced 2025-12-07 00:03:15 -05:00
Moved LessRunes to types package
This commit is contained in:
parent
9e205eef4b
commit
3d31b52799
3
dep.go
3
dep.go
@ -5,6 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
alpm "github.com/Jguer/go-alpm"
|
alpm "github.com/Jguer/go-alpm"
|
||||||
|
"github.com/Jguer/yay/v9/pkg/types"
|
||||||
rpc "github.com/mikkeloscar/aur"
|
rpc "github.com/mikkeloscar/aur"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ func (q providers) Less(i, j int) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return lessRunes([]rune(q.Pkgs[i].Name), []rune(q.Pkgs[j].Name))
|
return types.LessRunes([]rune(q.Pkgs[i].Name), []rune(q.Pkgs[j].Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q providers) Swap(i, j int) {
|
func (q providers) Swap(i, j int) {
|
||||||
|
|||||||
30
pkg/types/runes.go
Normal file
30
pkg/types/runes.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import "unicode"
|
||||||
|
|
||||||
|
// LessRunes compares two rune values, and returns true if the first argument is lexicographicaly smaller.
|
||||||
|
func LessRunes(iRunes, jRunes []rune) bool {
|
||||||
|
max := len(iRunes)
|
||||||
|
if max > len(jRunes) {
|
||||||
|
max = len(jRunes)
|
||||||
|
}
|
||||||
|
|
||||||
|
for idx := 0; idx < max; idx++ {
|
||||||
|
ir := iRunes[idx]
|
||||||
|
jr := jRunes[idx]
|
||||||
|
|
||||||
|
lir := unicode.ToLower(ir)
|
||||||
|
ljr := unicode.ToLower(jr)
|
||||||
|
|
||||||
|
if lir != ljr {
|
||||||
|
return lir < ljr
|
||||||
|
}
|
||||||
|
|
||||||
|
// the lowercase runes are the same, so compare the original
|
||||||
|
if ir != jr {
|
||||||
|
return ir < jr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return len(iRunes) < len(jRunes)
|
||||||
|
}
|
||||||
33
pkg/types/runes_test.go
Normal file
33
pkg/types/runes_test.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestLessRunes(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
type args struct {
|
||||||
|
iRunes []rune
|
||||||
|
jRunes []rune
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{name: "nilslices", args: args{iRunes: nil, jRunes: nil}, want: false},
|
||||||
|
{name: "emptyslices", args: args{iRunes: []rune{}, jRunes: []rune{}}, want: false},
|
||||||
|
{name: "simpleslice a,b", args: args{iRunes: []rune{'a'}, jRunes: []rune{'b'}}, want: true},
|
||||||
|
{name: "simpleslice b,a", args: args{iRunes: []rune{'b'}, jRunes: []rune{'a'}}, want: false},
|
||||||
|
{name: "equalslice", args: args{iRunes: []rune{'a', 'a', 'a'}, jRunes: []rune{'a', 'a', 'a'}}, want: false},
|
||||||
|
{name: "uppercase", args: args{iRunes: []rune{'a'}, jRunes: []rune{'A'}}, want: false},
|
||||||
|
{name: "longerFirstArg", args: args{iRunes: []rune{'a', 'b'}, jRunes: []rune{'a'}}, want: false},
|
||||||
|
{name: "longerSecondArg", args: args{iRunes: []rune{'a'}, jRunes: []rune{'a', 'b'}}, want: true},
|
||||||
|
{name: "utf8 less", args: args{iRunes: []rune{'世', '2', '0'}, jRunes: []rune{'世', '界', '3'}}, want: true},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := LessRunes(tt.args.iRunes, tt.args.jRunes); got != tt.want {
|
||||||
|
t.Errorf("LessRunes() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
4
query.go
4
query.go
@ -38,9 +38,9 @@ func (q aurQuery) Less(i, j int) bool {
|
|||||||
case "popularity":
|
case "popularity":
|
||||||
result = q[i].Popularity > q[j].Popularity
|
result = q[i].Popularity > q[j].Popularity
|
||||||
case "name":
|
case "name":
|
||||||
result = lessRunes([]rune(q[i].Name), []rune(q[j].Name))
|
result = types.LessRunes([]rune(q[i].Name), []rune(q[j].Name))
|
||||||
case "base":
|
case "base":
|
||||||
result = lessRunes([]rune(q[i].PackageBase), []rune(q[j].PackageBase))
|
result = types.LessRunes([]rune(q[i].PackageBase), []rune(q[j].PackageBase))
|
||||||
case "submitted":
|
case "submitted":
|
||||||
result = q[i].FirstSubmitted < q[j].FirstSubmitted
|
result = q[i].FirstSubmitted < q[j].FirstSubmitted
|
||||||
case "modified":
|
case "modified":
|
||||||
|
|||||||
@ -29,14 +29,14 @@ func (u upSlice) Less(i, j int) bool {
|
|||||||
if u[i].Repository == u[j].Repository {
|
if u[i].Repository == u[j].Repository {
|
||||||
iRunes := []rune(u[i].Name)
|
iRunes := []rune(u[i].Name)
|
||||||
jRunes := []rune(u[j].Name)
|
jRunes := []rune(u[j].Name)
|
||||||
return lessRunes(iRunes, jRunes)
|
return types.LessRunes(iRunes, jRunes)
|
||||||
}
|
}
|
||||||
|
|
||||||
syncDB, err := alpmHandle.SyncDBs()
|
syncDB, err := alpmHandle.SyncDBs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
iRunes := []rune(u[i].Repository)
|
iRunes := []rune(u[i].Repository)
|
||||||
jRunes := []rune(u[j].Repository)
|
jRunes := []rune(u[j].Repository)
|
||||||
return lessRunes(iRunes, jRunes)
|
return types.LessRunes(iRunes, jRunes)
|
||||||
}
|
}
|
||||||
|
|
||||||
less := false
|
less := false
|
||||||
@ -59,7 +59,7 @@ func (u upSlice) Less(i, j int) bool {
|
|||||||
|
|
||||||
iRunes := []rune(u[i].Repository)
|
iRunes := []rune(u[i].Repository)
|
||||||
jRunes := []rune(u[j].Repository)
|
jRunes := []rune(u[j].Repository)
|
||||||
return lessRunes(iRunes, jRunes)
|
return types.LessRunes(iRunes, jRunes)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
27
utils.go
27
utils.go
@ -2,7 +2,6 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"unicode"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const gitEmptyTree = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
|
const gitEmptyTree = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
|
||||||
@ -59,32 +58,6 @@ func (mss mapStringSet) Add(n string, v string) {
|
|||||||
mss[n].set(v)
|
mss[n].set(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
func lessRunes(iRunes, jRunes []rune) bool {
|
|
||||||
max := len(iRunes)
|
|
||||||
if max > len(jRunes) {
|
|
||||||
max = len(jRunes)
|
|
||||||
}
|
|
||||||
|
|
||||||
for idx := 0; idx < max; idx++ {
|
|
||||||
ir := iRunes[idx]
|
|
||||||
jr := jRunes[idx]
|
|
||||||
|
|
||||||
lir := unicode.ToLower(ir)
|
|
||||||
ljr := unicode.ToLower(jr)
|
|
||||||
|
|
||||||
if lir != ljr {
|
|
||||||
return lir < ljr
|
|
||||||
}
|
|
||||||
|
|
||||||
// the lowercase runes are the same, so compare the original
|
|
||||||
if ir != jr {
|
|
||||||
return ir < jr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return len(iRunes) < len(jRunes)
|
|
||||||
}
|
|
||||||
|
|
||||||
func stringSliceEqual(a, b []string) bool {
|
func stringSliceEqual(a, b []string) bool {
|
||||||
if a == nil && b == nil {
|
if a == nil && b == nil {
|
||||||
return true
|
return true
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user