@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
91 lines (90 loc) • 3.4 kB
JavaScript
import moment from "moment";
import createDebugLogger from "debug";
import { getDefaultMissValue } from "./collectUtils.js";
const debug = createDebugLogger("@natlibfi/melinda-record-match-validator:collectFunctions/collectControlFields");
const debugDev = debug.extend("dev");
export function get001(record) {
const [f001Value] = record.get("001").map((field) => field.value);
const [f003Value] = record.get("003").map((field) => field.value);
const isMelindaId = f003Value === "FI-MELINDA";
debugDev("Record f001 value: %o", f001Value);
debugDev("Record f001 value is melinda id: %o", isMelindaId);
return { value: f001Value || getDefaultMissValue(), isMelindaId };
}
export function get005(record) {
const [f005Value] = record.get("005").map((field) => field.value);
const time = moment(f005Value, ["YYYYMMDDHHmmss.S"], true).format("YYYY-MM-DDTHH:mm:ss");
debugDev("Last modification time: %o", time);
return time;
}
const publicationStatusHash = {
"b": "No dates given; B.C. date involved",
"c": "Continuing resource currently published",
"d": "Continuing resource ceased publication",
"e": "Detailed date",
"i": "Inclusive dates of collection",
"k": "Range of year of bulk of collection",
"m": "Multiple dates",
"n": "Dates unknown",
"p": "Date of distribution/release/issue and production/recording session when different",
"q": "Questionable date",
"r": "Reprint/reissue date and original date",
"s": "Single known/probable date",
"t": "Publication date and copyright date",
"u": "Continuing resource status unknown",
"|": "No attempt to code"
};
const catalogingSourceHash = {
" ": "National bibliographical agency",
"c": "Cooperative cataloging program",
"d": "Other",
"u": "Unknown",
"|": "No attempt to code"
};
const formOfItemHash = {
" ": "None of the following, expect for CF unknown or not specified",
"a": "Microfilm",
"b": "Microfiche",
"c": "Microopaque",
"d": "Large print",
"f": "Braille",
"o": "Online",
"q": "Direct electronic",
"r": "Regular print reproduction",
"s": "Electronic",
"|": "No attempt to code"
};
export function get008(record) {
const [f008Value] = record.get("008").map((field) => field.value);
const publicationStatus = f008Value ? f008Value[6] : "|";
const catalogingSource = f008Value ? f008Value[39] : "|";
const formOfItem = getFormOfItem();
const result = {
catalogingSource: mapCatalogingSource(catalogingSource),
publicationStatus: mapPublicationStatus(publicationStatus),
formOfItem: mapFormOfItem(formOfItem)
};
return result;
function getFormOfItem() {
if (!f008Value) {
return "|";
}
if (record.isMP() || record.isVM()) {
return f008Value[29];
}
return f008Value[23];
}
function mapPublicationStatus(publicationStatus2) {
const tmp = publicationStatus2 in publicationStatusHash ? publicationStatus2 : "|";
return { level: publicationStatusHash[tmp], code: tmp };
}
function mapCatalogingSource(catalogingSource2) {
const tmp = catalogingSource2 in catalogingSourceHash ? catalogingSource2 : "|";
return { level: catalogingSourceHash[tmp], code: tmp };
}
function mapFormOfItem(formOfItemCode) {
const tmp = formOfItemCode in formOfItemHash ? formOfItemCode : "|";
return { form: formOfItemHash[tmp], code: tmp };
}
}
//# sourceMappingURL=collectControlFields.js.map