UNPKG

@natlibfi/melinda-record-match-validator

Version:

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

43 lines (42 loc) 1.72 kB
import createDebugLogger from "debug"; import { hasFields, getSubfield, getSubfields, removeExtraSpaces, stripPunc } from "./collectUtils.js"; const debug = createDebugLogger("@natlibfi/melinda-record-match-validator:title"); const debugData = debug.extend("data"); export function getAllTitleFeatures(record) { return { titleFeatures: getTitleFeatures(record), seriesFeatures: getSeriesFeatures(record), f946Features: get946Features(record) }; } export function getTitleFeatures(record) { const [f245] = hasFields("245", record, titleFieldToJSON); debugData("Field 245 info: %o", f245); return f245; } export function get946Features(record) { const f946Data = hasFields("946", record, titleFieldToJSON); debugData("Field 946 info: %o", JSON.stringify(f946Data)); return f946Data; } function titleFieldToJSON(field) { const title = cleanValue(getSubfield(field, "a")); const remainderOfTitle = cleanValue(getSubfield(field, "b")); const numbersOfPartInSectionOfAWork = getSubfields(field, "n").map((sf) => cleanValue(sf)); const namesOfPartInSectionOfAWork = getSubfields(field, "p").map((sf) => cleanValue(sf)); return { title, remainderOfTitle, numbersOfPartInSectionOfAWork, namesOfPartInSectionOfAWork }; } export function getSeriesFeatures(record) { const fields490 = record.get("490"); return fields490.map((f) => f490ToJSON(f)); return f490Data; function f490ToJSON(field) { const seriesTitle = cleanValue(getSubfield(field, "a")); const seriesNumber = cleanValue(getSubfield(field, "v")); return { seriesTitle, seriesNumber }; } } function cleanValue(value) { return removeExtraSpaces(stripPunc(value)); } //# sourceMappingURL=collectTitle.js.map