MCPcopy
hub / github.com/colbymchenry/codegraph / boundedEditDistance

Function boundedEditDistance

src/search/query-parser.ts:157–184  ·  view source on GitHub ↗
(a: string, b: string, maxDist: number)

Source from the content-addressed store, hash-verified

155 * callers should pass `lowercase(name)` strings.
156 */
157export function boundedEditDistance(a: string, b: string, maxDist: number): number {
158 if (a === b) return 0;
159 const al = a.length;
160 const bl = b.length;
161 if (Math.abs(al - bl) > maxDist) return maxDist + 1;
162 if (al === 0) return bl;
163 if (bl === 0) return al;
164
165 let prev = new Array<number>(bl + 1);
166 let cur = new Array<number>(bl + 1);
167 for (let j = 0; j <= bl; j++) prev[j] = j;
168
169 for (let i = 1; i <= al; i++) {
170 cur[0] = i;
171 let rowMin = cur[0]!;
172 for (let j = 1; j <= bl; j++) {
173 const cost = a.charCodeAt(i - 1) === b.charCodeAt(j - 1) ? 0 : 1;
174 const insertion = cur[j - 1]! + 1;
175 const deletion = prev[j]! + 1;
176 const substitution = prev[j - 1]! + cost;
177 cur[j] = Math.min(insertion, deletion, substitution);
178 if (cur[j]! < rowMin) rowMin = cur[j]!;
179 }
180 if (rowMin > maxDist) return maxDist + 1;
181 [prev, cur] = [cur, prev];
182 }
183 return prev[bl]!;
184}

Callers 2

searchNodesFuzzyMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected