fix(tui): prioritize exact fuzzy matches
This commit is contained in:
@@ -60,6 +60,10 @@ export function fuzzyMatch(query: string, text: string): FuzzyMatch {
|
|||||||
return { matches: false, score: 0 };
|
return { matches: false, score: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (normalizedQuery === textLower) {
|
||||||
|
score -= 100;
|
||||||
|
}
|
||||||
|
|
||||||
return { matches: true, score };
|
return { matches: true, score };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,13 @@ describe("fuzzyFilter", () => {
|
|||||||
assert.strictEqual(result[0], "app");
|
assert.strictEqual(result[0], "app");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("prioritizes exact matches over longer prefix matches", () => {
|
||||||
|
const items = ["clone", "cl"];
|
||||||
|
const result = fuzzyFilter(items, "cl", (x: string) => x);
|
||||||
|
|
||||||
|
assert.deepStrictEqual(result, ["cl", "clone"]);
|
||||||
|
});
|
||||||
|
|
||||||
it("works with custom getText function", () => {
|
it("works with custom getText function", () => {
|
||||||
const items = [
|
const items = [
|
||||||
{ name: "foo", id: 1 },
|
{ name: "foo", id: 1 },
|
||||||
|
|||||||
Reference in New Issue
Block a user