Made search case-insensitive

This commit is contained in:
Artyom Belousov 2021-02-03 19:40:21 +03:00
parent 88ea431a27
commit 2e3d11ca42
3 changed files with 13 additions and 2 deletions

View file

@ -1,6 +1,9 @@
package dicttranslate
import "github.com/texttheater/golang-levenshtein/levenshtein"
import (
"github.com/texttheater/golang-levenshtein/levenshtein"
"strings"
)
func match(query string, opts []string, maxDist int) (string, bool) {
bestInd := -1
@ -8,7 +11,7 @@ func match(query string, opts []string, maxDist int) (string, bool) {
for i, s := range opts {
cfg := levenshtein.DefaultOptions
cfg.SubCost = 1
dist := levenshtein.DistanceForStrings([]rune(s), []rune(query), cfg)
dist := levenshtein.DistanceForStrings([]rune(strings.ToLower(s)), []rune(strings.ToLower(query)), cfg)
if dist <= maxDist && (bestInd == -1 || dist < bestDist) {
bestInd = i
bestDist = dist

View file

@ -40,6 +40,13 @@ func TestMatch(t *testing.T) {
opts: []string{"option", "opt1on"},
shouldFind: false,
},
{
name: "Match case insensitive",
query: "option",
opts: []string{"OPTION", "opt1on"},
shouldFind: true,
match: "OPTION",
},
}
for _, test := range tests {