MCPcopy
hub / github.com/urfave/cli / jaroWinkler

Function jaroWinkler

suggestions.go:82–103  ·  view source on GitHub ↗

jaroWinkler is more accurate when strings have a common prefix up to a defined maximum length. Adapted from https://github.com/xrash/smetrics/blob/5f08fbb34913bc8ab95bb4f2a89a0637ca922666/jaro-winkler.go.

(a, b string)

Source from the content-addressed store, hash-verified

80//
81// Adapted from https://github.com/xrash/smetrics/blob/5f08fbb34913bc8ab95bb4f2a89a0637ca922666/jaro-winkler.go.
82func jaroWinkler(a, b string) float64 {
83 const (
84 boostThreshold = 0.7
85 prefixSize = 4
86 )
87 jaroDist := jaroDistance(a, b)
88 if jaroDist <= boostThreshold {
89 return jaroDist
90 }
91
92 prefix := int(math.Min(float64(len(a)), math.Min(float64(prefixSize), float64(len(b)))))
93
94 var prefixMatch float64
95 for i := range prefix {
96 if a[i] == b[i] {
97 prefixMatch++
98 } else {
99 break
100 }
101 }
102 return jaroDist + 0.1*prefixMatch*(1.0-jaroDist)
103}
104
105func suggestFlag(flags []Flag, provided string, hideHelp bool) string {
106 distance := 0.0

Callers 3

suggestFlagFunction · 0.85
suggestCommandFunction · 0.85
TestJaroWinklerFunction · 0.85

Calls 1

jaroDistanceFunction · 0.85

Tested by 1

TestJaroWinklerFunction · 0.68