@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
31 lines (30 loc) • 1.45 kB
JavaScript
import createDebugLogger from "debug";
import * as features from "@natlibfi/melinda-record-matching/src/match-detection/features/bib/index.js";
const debug = createDebugLogger("@natlibfi/melinda-record-match-validator:language");
const debugDev = debug.extend("dev");
const { extract, compare, name } = features["language"]();
debug(`Using matcher feature: ${name}`);
export function getLanguageFeatures(record, recordExternal = {}) {
return { language: extract({ record, recordExternal }) };
}
export function compareLanguageFeatures({ languageFeatures1, languageFeatures2 }) {
debugDev(JSON.stringify(languageFeatures1));
debugDev(JSON.stringify(languageFeatures2));
const compareResult = compare(languageFeatures1.language, languageFeatures2.language);
debug(`CompareResult: ${compareResult}`);
return convertPointsToBoolean(compareResult);
}
export function checkLanguage({ record1, record2 }) {
const languageFeatures1 = getLanguageFeatures(record1);
const languageFeatures2 = getLanguageFeatures(record2);
return compareLanguageFeatures({ languageFeatures1, languageFeatures2 });
}
function convertPointsToBoolean(points, threshold = 0) {
if (points < threshold) {
debugDev(`Returning false for less points (${points}) than threshold ${threshold}`);
return false;
}
debugDev(`Returning true for equal or more points (${points}) than threshold ${threshold}`);
return true;
}
//# sourceMappingURL=language.js.map