UNPKG

@natlibfi/melinda-record-match-validator

Version:

Validates if two records matched by melinda-record-matching can be merged and sets merge priority

78 lines (77 loc) 2.54 kB
function hasIsbn(record) { const fields = record.get("020"); return fields.length > 0; } function check028(record) { const fields = record.get("028"); return fields.some((field) => field.subfields.some((subfield) => subfield.code === "b" && subfield.value === "Celia")); } function check245(record) { const fields = record.get("245"); return fields.some((field) => field.subfields.some((subfield) => subfield.code === "b" && subfield.value?.match(/^Daisy-äänikirja vain lukemisesteisille/u))); } function check26X(record) { const fields = record.get("26[04]"); return fields.some((field) => field.subfields.some((subfield) => subfield.code === "b" && subfield.value?.match(/^\[?Celia/ui))); } function check300(record) { const fields = record.get("300"); return fields.some((field) => field.subfields.some((subfield) => isDaisySubfield300A(subfield))); function isDaisySubfield300A(subfield) { if (subfield.code !== "a") { return false; } return subfield.value.includes("levy (Daisy)") || subfield.value.includes("levy\xE4 (Daisy)"); } } function check347(record) { const fields = record.get("347"); return fields.some((field) => isDaisyField347(field)); function isDaisyField347(field) { if (!field.subfields.some((subfield) => subfield.code === "a" && subfield.value === "\xE4\xE4nitiedosto")) { return false; } return field.subfields.some((subfield) => subfield.code === "b" && subfield.value === "Daisy"); } } function check516(record) { const fields = record.get("516"); return fields.some((field) => field.subfields.some((subfield) => subfield.code === "a" && subfield.value?.match(/^Daisy-äänitiedosto\.?$/ui))); } function check538(record) { const fields = record.get("538"); return fields.some((field) => field.subfields.some((subfield) => subfield.code === "a" && subfield.value?.match(/Daisy/ui))); } function isDaisy(record) { if (hasIsbn(record)) { return false; } if (check028(record)) { return true; } if (check245(record)) { return true; } if (check26X(record)) { return true; } if (check300(record)) { return true; } if (check347(record)) { return true; } if (check516(record)) { return true; } if (check538(record)) { return true; } return false; } export function performDaisySanityCheck({ record1, record2 }) { const daisiness1 = isDaisy(record1); const daisiness2 = isDaisy(record2); return daisiness1 === daisiness2; } //# sourceMappingURL=sanityCheckDaisy.js.map