UNPKG

@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
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