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