@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
67 lines (66 loc) • 2.17 kB
JavaScript
function physicalDescriptionContainsDvdVideoLevy(fields300) {
return fields300.some((field) => field.subfields.some((subfield) => containsDvdVideolevy(subfield)));
function containsDvdVideolevy(subfield) {
if (subfield.code !== "a") {
return false;
}
if (subfield.value?.match(/DVD-video(?:levy|skiv)/ui)) {
return true;
}
return false;
}
}
function physicalDescriptionContainsBluRayVideolevy(fields300) {
return fields300.some((field) => field.subfields.some((subfield) => containsBluRayVideolevy(subfield)));
function containsBluRayVideolevy(subfield) {
if (subfield.code !== "a") {
return false;
}
if (subfield.value?.match(/Blu-?Ray-video(?:levy|skiv)/ui)) {
return true;
}
return false;
}
}
function isDvdVideolevy(record) {
const fields007 = record.get(/^007$/u);
if (fields007.some((field) => field.value.match(/^v...v/u))) {
return true;
}
const fields = record.get(/^300$/u);
if (physicalDescriptionContainsDvdVideoLevy(fields)) {
return true;
}
return false;
}
function isBluRayVideolevy(record) {
const fields007 = record.get(/^007$/u);
if (fields007.some((field) => field.value.match(/^v...s/u))) {
return true;
}
const fields300 = record.get(/^300$/u);
if (physicalDescriptionContainsBluRayVideolevy(fields300)) {
return true;
}
return false;
}
function getPhysicalDescription(record) {
return {
containsDvdVideolevy: isDvdVideolevy(record),
containsBluRayVideolevy: isBluRayVideolevy(record)
};
}
export function performDvdSanityCheck({ record1, record2 }) {
const results1 = getPhysicalDescription(record1);
const results2 = getPhysicalDescription(record2);
const checkDvd = results1.containsDvdVideolevy || results2.containsDvdVideolevy;
const checkBluRay = results1.containsBluRayVideolevy || results2.containsBluRayVideolevy;
if (checkDvd && results1.containsDvdVideolevy !== results2.containsDvdVideolevy) {
return false;
}
if (checkBluRay && results1.containsBluRayVideolevy !== results2.containsBluRayVideolevy) {
return false;
}
return true;
}
//# sourceMappingURL=sanityCheckDvd.js.map