diff --git a/internal/strdist/strdist.go b/internal/strdist/strdist.go index d5b640ef..76e50d6d 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 == '/' { + return Cost{SwapAB: Inhibit, DeleteA: 0, InsertB: Inhibit} + } else if ar == '/' && br == '*' { + return Cost{SwapAB: Inhibit, DeleteA: Inhibit, InsertB: 0} } 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 == '?' { return Cost{SwapAB: 0, DeleteA: 1, InsertB: 1} } diff --git a/internal/strdist/strdist_test.go b/internal/strdist/strdist_test.go index 7f8975a0..9ea7e463 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: "/*a/", b: "/a/"}, } func (s *S) TestDistance(c *C) {