@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
68 lines (67 loc) • 2.13 kB
JavaScript
function physicalDescriptionContainsCdAanilevy(fields300) {
return fields300.some((field) => field.subfields.some((subfield) => containsCdAanilevy(subfield)));
function containsCdAanilevy(subfield) {
if (subfield.code !== "a") {
return false;
}
if (subfield.value?.match(/CD-(?:äänilevy|ljudskiv)/ui)) {
return true;
}
return false;
}
}
function physicalDescriptionContainsLpAanilevy(fields300) {
return fields300.some((field) => field.subfields.some((subfield) => containsLpAanilevy(subfield)));
function containsLpAanilevy(subfield) {
if (subfield.code !== "a") {
return false;
}
if (subfield.value?.match(/LP-(?:äänilevy|ljudskiv)/ui)) {
return true;
}
return false;
}
}
function isCdAanilevy(record) {
const fields007 = record.get(/^007$/u);
if (fields007.some((field) => field.value.match(/^sd.f..g...m/u))) {
return true;
}
const fields = record.get(/^300$/u);
if (physicalDescriptionContainsCdAanilevy(fields)) {
return true;
}
return false;
}
function isLpAanilevy(record) {
const fields007 = record.get(/^007$/u);
if (fields007.some((field) => field.value.match(/^sd.[cd]..e...p/u))) {
return true;
}
const fields300 = record.get(/^300$/u);
if (physicalDescriptionContainsLpAanilevy(fields300)) {
return true;
}
return false;
}
function getPhysicalDescription(record) {
const result = {
containsCdAanilevy: isCdAanilevy(record),
containsLpAanilevy: isLpAanilevy(record)
};
return result;
}
export function performAudioSanityCheck({ record1, record2 }) {
const results1 = getPhysicalDescription(record1);
const results2 = getPhysicalDescription(record2);
const checkLp = results1.containsCdAanilevy || results2.containsCdAanilevy;
const checkCd = results1.containsLpAanilevy || results2.containsLpAanilevy;
if (checkCd && results1.containsCdAanilevy !== results2.containsCdAanilevy) {
return false;
}
if (checkLp && results1.containsLpAanilevy !== results2.containsLpAanilevy) {
return false;
}
return true;
}
//# sourceMappingURL=sanityCheckAudio.js.map