UNPKG

@natlibfi/melinda-record-match-validator

Version:

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

80 lines (79 loc) 2.58 kB
export function hasFields(tag, record, useFunction, useFunctionParameters) { const fields = record.get(tag); if (useFunction !== void 0) { return fields.map((field) => useFunction(field, useFunctionParameters)); } return fields; } export function hasField(tag, record, useFunction, useFunctionParameters) { const fields = record.get(tag); if (fields.length === 0) { return []; } if (useFunction !== void 0) { return useFunction(fields[0], useFunctionParameters); } return [fields[0]]; } export function getDefaultMissValue() { return "undefined"; } export function getSubfield(field, subfieldCode) { const [value] = field.subfields.filter((sub) => sub.code === subfieldCode).map((sub) => sub.value); if (value === void 0) { return getDefaultMissValue(); } return value; } export function getSubfields(field, subfieldCode) { return field.subfields.filter((sub) => sub.code === subfieldCode).map((sub) => sub.value); } export function getSubfieldValue(field, subfieldCode) { const values = field.subfields.filter((sub) => sub.code === subfieldCode).map((sub) => sub.value); if (values.length === 0) { return null; } return values[0]; } export function getSubfieldValues(field, subfieldCode) { if (!field.subfields) { return []; } return field.subfields.filter((sub) => sub.code === subfieldCode).map((sub) => sub.value); } export function stripPunc(value) { return value.replace(/(?: [=;:/]|[.,])$/u, ""); } export function removeExtraSpaces(value) { return value.replace(/ +/u, " "); } export function get042(record) { return hasField("042", record, getSubfields, "a"); } export function getSID(record) { const SIDs = hasFields("SID", record).map((field) => sidToJson(field)); return SIDs; function sidToJson(sid) { const [database] = sid.subfields.filter((sub) => sub.code === "b").map((sub) => sub.value); const [id] = sid.subfields.filter((sub) => sub.code === "c").map((sub) => sub.value); return { id, database }; } } export function get33Xb(record, tag) { const types = hasFields(tag, record, getSubfield, "b"); return { types }; } export function get336bContentType(record) { return get33Xb(record, "336"); } export function get337bMediaType(record) { return get33Xb(record, "337"); } export function get338bCarrierType(record) { return get33Xb(record, "338"); } export function getLOW(record) { const LOWs = hasFields("LOW", record, getSubfield, "a").filter((element) => element && element !== "undefined"); return LOWs; } //# sourceMappingURL=collectUtils.js.map