@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
73 lines (56 loc) • 1.96 kB
JavaScript
//import createDebugLogger from 'debug';
//import {nvdebug} from '../utils';
//const debug = createDebugLogger('@natlibfi/melinda-record-match-validator:collectRecordValues:collectFields');
export function hasFields(tag, record, useFunction, useFunctionParameters) {
const fields = record.get(tag);
if (useFunction !== undefined) {
//const result = fields.map(field => useFunction(field, useFunctionParameters));
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 !== undefined) {
return useFunction(fields[0], useFunctionParameters);
}
return [fields[0]];
}
export function getDefaultMissValue() {
return 'undefined';
}
// Check 773 multiple sub code w & g
// Check 245 multiple sub code n & p
// Check 042 multiple sub code a
export function getSubfield(field, subfieldCode) {
const [value] = field.subfields.filter(sub => sub.code === subfieldCode).map(sub => sub.value);
if (value === undefined) {
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) { // sanityCheck
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, ' ');
}