Add refactor changes of fuzzy filter

This commit is contained in:
c-bata 2018-10-20 15:50:53 +09:00
parent dfd47a63f6
commit 76ba1f0da4
2 changed files with 12 additions and 12 deletions

View File

@ -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

View File

@ -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