From 310078b1fb323afbcdf3b2f00f2c88bce3dc3c8b Mon Sep 17 00:00:00 2001 From: comp500 Date: Thu, 13 Jun 2019 22:58:46 +0100 Subject: [PATCH] Sort by levenshtein distance --- curseforge/curseforge.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/curseforge/curseforge.go b/curseforge/curseforge.go index 3d600d1..4100cba 100644 --- a/curseforge/curseforge.go +++ b/curseforge/curseforge.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "regexp" + "sort" "strconv" "strings" @@ -178,20 +179,14 @@ func cmdInstall(flags core.Flags, mod string, modArgsTail []string) error { done = true } else { // Find the closest value to the search term - searchIndex := 0 - currDistance := levenshtein.ComputeDistance(searchTerm, results[0].Name) - for i := 1; i < len(results)-1; i++ { - newDist := levenshtein.ComputeDistance(searchTerm, results[i].Name) - if newDist < currDistance { - searchIndex = i - currDistance = newDist - } - } + sort.Slice(results, func(i, j int) bool { + return levenshtein.ComputeDistance(searchTerm, results[i].Name) < levenshtein.ComputeDistance(searchTerm, results[j].Name) + }) menu := wmenu.NewMenu("Choose a number:") for i, v := range results { - menu.Option(v.Name, v, i == searchIndex, nil) + menu.Option(v.Name, v, i == 0, nil) } menu.Option("Cancel", nil, false, nil)