diff --git a/internal/strdist/strdist.go b/internal/strdist/strdist.go index d5b640ef..8a653c27 100644 --- a/internal/strdist/strdist.go +++ b/internal/strdist/strdist.go @@ -123,12 +123,17 @@ func globCost(ar, br rune) Cost { if ar == '⁑' || br == '⁑' { return Cost{SwapAB: 0, DeleteA: 0, InsertB: 0} } - if ar == '/' || br == '/' { - return Cost{SwapAB: Inhibit, DeleteA: Inhibit, InsertB: Inhibit} - } if ar == '*' || br == '*' { + if ar == '*' && br == '/' { + return Cost{SwapAB: Inhibit, DeleteA: 0, InsertB: Inhibit} + } else if ar == '/' && br == '*' { + return Cost{SwapAB: Inhibit, DeleteA: Inhibit, InsertB: 0} + } return Cost{SwapAB: 0, DeleteA: 0, InsertB: 0} } + if ar == '/' || br == '/' { + return Cost{SwapAB: Inhibit, DeleteA: Inhibit, InsertB: Inhibit} + } if ar == '?' || br == '?' { return Cost{SwapAB: 0, DeleteA: 1, InsertB: 1} } diff --git a/internal/strdist/strdist_test.go b/internal/strdist/strdist_test.go index 7f8975a0..e1974871 100644 --- a/internal/strdist/strdist_test.go +++ b/internal/strdist/strdist_test.go @@ -58,6 +58,7 @@ var distanceTests = []distanceTest{ {f: strdist.GlobCost, r: 1, a: "a**f/hij", b: "abc/def/hik"}, {f: strdist.GlobCost, r: 2, a: "a**fg", b: "abc/def/hik"}, {f: strdist.GlobCost, r: 0, a: "a**f/hij/klm", b: "abc/d**m"}, + {f: strdist.GlobCost, r: 0, a: "/*foo/", b: "/foo/"}, } func (s *S) TestDistance(c *C) {