Add refactor changes of fuzzy filter
This commit is contained in:
parent
dfd47a63f6
commit
76ba1f0da4
22
filter.go
22
filter.go
|
@ -7,17 +7,17 @@ type Filter func([]Suggest, string, bool) []Suggest
|
|||
|
||||
// FilterHasPrefix checks whether the string completions.Text begins with sub.
|
||||
func FilterHasPrefix(completions []Suggest, sub string, ignoreCase bool) []Suggest {
|
||||
return filterCommon(completions, sub, ignoreCase, strings.HasPrefix)
|
||||
return filterSuggestions(completions, sub, ignoreCase, strings.HasPrefix)
|
||||
}
|
||||
|
||||
// FilterHasSuffix checks whether the completion.Text ends with sub.
|
||||
func FilterHasSuffix(completions []Suggest, sub string, ignoreCase bool) []Suggest {
|
||||
return filterCommon(completions, sub, ignoreCase, strings.HasSuffix)
|
||||
return filterSuggestions(completions, sub, ignoreCase, strings.HasSuffix)
|
||||
}
|
||||
|
||||
// FilterContains checks whether the completion.Text contains sub.
|
||||
func FilterContains(completions []Suggest, sub string, ignoreCase bool) []Suggest {
|
||||
return filterCommon(completions, sub, ignoreCase, strings.Contains)
|
||||
return filterSuggestions(completions, sub, ignoreCase, strings.Contains)
|
||||
}
|
||||
|
||||
// FilterFuzzy checks whether the completion.Text fuzzy matches sub.
|
||||
|
@ -25,7 +25,7 @@ func FilterContains(completions []Suggest, sub string, ignoreCase bool) []Sugges
|
|||
// would match, for example, "Good food is gone"
|
||||
// ^ ^ ^
|
||||
func FilterFuzzy(completions []Suggest, sub string, ignoreCase bool) []Suggest {
|
||||
return filterCommon(completions, sub, ignoreCase, fuzzyMatch)
|
||||
return filterSuggestions(completions, sub, ignoreCase, fuzzyMatch)
|
||||
}
|
||||
|
||||
func fuzzyMatch(s, sub string) bool {
|
||||
|
@ -49,22 +49,22 @@ func fuzzyMatch(s, sub string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func filterCommon(completions []Suggest, sub string, ignoreCase bool, test func(string, string) bool) []Suggest {
|
||||
func filterSuggestions(suggestions []Suggest, sub string, ignoreCase bool, function func(string, string) bool) []Suggest {
|
||||
if sub == "" {
|
||||
return completions
|
||||
return suggestions
|
||||
}
|
||||
if ignoreCase {
|
||||
sub = strings.ToUpper(sub)
|
||||
}
|
||||
|
||||
ret := make([]Suggest, 0, len(completions))
|
||||
for i := range completions {
|
||||
c := completions[i].Text
|
||||
ret := make([]Suggest, 0, len(suggestions))
|
||||
for i := range suggestions {
|
||||
c := suggestions[i].Text
|
||||
if ignoreCase {
|
||||
c = strings.ToUpper(c)
|
||||
}
|
||||
if test(c, sub) {
|
||||
ret = append(ret, completions[i])
|
||||
if function(c, sub) {
|
||||
ret = append(ret, suggestions[i])
|
||||
}
|
||||
}
|
||||
return ret
|
||||
|
|
|
@ -139,7 +139,7 @@ func TestFilter(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestFuzzy(t *testing.T) {
|
||||
func TestFuzzyMatch(t *testing.T) {
|
||||
tests := []struct {
|
||||
s string
|
||||
sub string
|
||||
|
|
Loading…
Reference in New Issue