Библиотека для обработки MARC21 и применения правил пунктуации согласно стандартам Библиотеки Конгресса США.
npm install marc21-punctuation
import { Marc21Formatter, Marc21Field } from 'marc21-punctuation';
// Создание форматтера MARC21
const formatter = new Marc21Formatter();
// Пример поля MARC21
const titleField: Marc21Field = {
tag: '245',
indicators: ['1', '0'],
subfields: [
{ code: 'a', value: 'Война и мир' },
{ code: 'b', value: 'роман' },
{ code: 'c', value: 'Лев Толстой' },
],
};
// Получение форматированного текста для отображения
const displayText = formatter.getDisplayText(titleField);
console.log(displayText); // Выведет: "Война и мир : роман / Лев Толстой"
// Получение подробного результата форматирования
const formattingResult = formatter.format(titleField);
console.log(formattingResult);
// Форматирование нескольких полей MARC21
const fields: Marc21Field[] = [
// Поле автора
{
tag: '100',
indicators: ['1', ' '],
subfields: [
{ code: 'a', value: 'Толстой' },
{ code: 'b', value: 'Л. Н.' },
{ code: 'd', value: '1828-1910' },
],
},
// Поле заголовка
titleField,
// Поле издания
{
tag: '260',
indicators: [' ', ' '],
subfields: [
{ code: 'a', value: 'Москва' },
{ code: 'b', value: 'Эксмо' },
{ code: 'c', value: '2020' },
],
},
];
const formattedRecord = formatter.formatRecord(fields);
console.log(formattedRecord);
Библиотека поддерживает следующие поля MARC21 с соответствующими правилами пунктуации:
Тег | Описание | Примеры форматирования |
---|---|---|
100 | Основной автор | Толстой, Л. Н., 1828-1910 |
245 | Заголовок | Война и мир : роман / Лев Толстой |
260 | Публикация | Москва : Эксмо, 2020 |
300 | Физическое описание | 1225 с. : ил. ; 22 см |
490 | Серия | (Классика мировой литературы ; т. 1) |
500 | Примечания | Библиогр.: с. 1220-1225 |
700 | Дополнительный автор | Иванов, И. И., переводчик |
Вы можете добавить свои правила пунктуации:
import { Marc21Formatter, PunctuationRule } from 'marc21-punctuation';
const customRule: PunctuationRule = {
tag: '520', // Поле аннотации
apply: (field) => {
// Ваша логика форматирования
// ...
return formattedSubfields;
},
description: 'Правило для форматирования аннотаций'
};
const formatter = new Marc21Formatter();
formatter.addRule(customRule);
MIT