fuzzy-rater
Version:
Tooling for fuzzily rating text according to some query
106 lines • 9.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const addAlterationData_1 = require("../addAlterationData");
const FuzzyMultiWordMatcher_1 = require("../wordMatcher/FuzzyMultiWordMatcher");
/**
* Simplifies the match groups to check the result
* @param matchGroups The match groups
* @returns The simplified match groups
*/
function simplifyMatchGroups(matchGroups) {
return matchGroups.map(group => [group.range.text, group.relations.map(v => v.type)]);
}
describe("addAlterationData", () => {
it("Should properly add alteration data of all matches", () => {
const inputText = "hallo I like potatoes and the likes";
const q1 = {
index: 0,
text: "lie",
matchedIndex: -1,
};
const q2 = {
index: 1,
text: "poatloes",
matchedIndex: -1,
};
const q1Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q1.text, 1);
const q2Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q2.text, 2);
const q1match = q1Matcher.getMatchData(inputText);
const q2match = q2Matcher.getMatchData(inputText);
const matchesQ1 = addAlterationData_1.addAlterationData([], q1match.alterations, q1);
const matchesQ2 = addAlterationData_1.addAlterationData(matchesQ1, q2match.alterations, q2);
expect(simplifyMatchGroups(matchesQ2)).toEqual([
["hallo I ", []],
["li", ["match"]],
["k", ["insert"]],
["e", ["match"]],
[" ", []],
["po", ["match"]],
["t", ["insert"]],
["at", ["match"]],
["", ["skip"]],
["oes", ["match"]],
[" and the ", []],
["li", ["match"]],
["k", ["insert"]],
["e", ["match"]],
["s", []],
]);
});
it("Should properly retain 0 character groups", () => {
const inputText = "I like blcks yes";
const q1 = {
index: 0,
text: "locks",
matchedIndex: -1,
};
const q2 = {
index: 1,
text: "yes",
matchedIndex: -1,
};
const q1Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q1.text, 1);
const q2Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q2.text, 1);
const q1match = q1Matcher.getMatchData(inputText);
const q2match = q2Matcher.getMatchData(inputText);
const matchesQ1 = addAlterationData_1.addAlterationData([], q1match.alterations, q1);
const matchesQ2 = addAlterationData_1.addAlterationData(matchesQ1, q2match.alterations, q2);
expect(simplifyMatchGroups(matchesQ2)).toEqual([
["I like b", []],
["l", ["match"]],
["", ["skip"]],
["cks", ["match"]],
[" ", []],
["yes", ["match"]],
]);
});
it("Should properly merge multiple 0 character groups", () => {
const inputText = "I like blcks yes";
const q1 = {
index: 0,
text: "locks",
matchedIndex: -1,
};
const q2 = {
index: 1,
text: "black",
matchedIndex: -1,
};
const q1Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q1.text, 1);
const q2Matcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher(q2.text, 1);
const q1match = q1Matcher.getMatchData(inputText);
const q2match = q2Matcher.getMatchData(inputText);
const matchesQ1 = addAlterationData_1.addAlterationData([], q1match.alterations, q1);
const matchesQ2 = addAlterationData_1.addAlterationData(matchesQ1, q2match.alterations, q2);
expect(simplifyMatchGroups(matchesQ2)).toEqual([
["I like ", []],
["b", ["match"]],
["l", ["match", "match"]],
["", ["skip", "skip"]],
["ck", ["match", "match"]],
["s", ["match"]],
[" yes", []],
]);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkQWx0ZXJhdGlvbkRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnV6enlSYXRlL190ZXN0cy9hZGRBbHRlcmF0aW9uRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDREQUF1RDtBQUN2RCxnRkFBMkU7QUFHM0U7Ozs7R0FJRztBQUNILFNBQVMsbUJBQW1CLENBQUMsV0FBMEI7SUFDbkQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUVELFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDL0IsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLFNBQVMsR0FBRyxxQ0FBcUMsQ0FBQztRQUN4RCxNQUFNLEVBQUUsR0FBRztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLEtBQUs7WUFDWCxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQ25CLENBQUM7UUFDRixNQUFNLEVBQUUsR0FBRztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUNuQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksNkNBQXFCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFD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