# Marc21 Punctuation

Библиотека для обработки MARC21 и применения правил пунктуации согласно стандартам Библиотеки Конгресса США.

## Установка

```bash
npm install marc21-punctuation
```

## Использование

```typescript
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

Библиотека поддерживает следующие поля MARC21 с соответствующими правилами пунктуации:

| Тег  | Описание                          | Примеры форматирования                        |
|------|---------------------------------|-------------------------------------------|
| 100  | Основной автор                   | Толстой, Л. Н., 1828-1910                 |
| 245  | Заголовок                        | Война и мир : роман / Лев Толстой         |
| 260  | Публикация                       | Москва : Эксмо, 2020                      |
| 300  | Физическое описание              | 1225 с. : ил. ; 22 см                     |
| 490  | Серия                           | (Классика мировой литературы ; т. 1)       |
| 500  | Примечания                       | Библиогр.: с. 1220-1225                   |
| 700  | Дополнительный автор             | Иванов, И. И., переводчик                 |

## Расширение правил

Вы можете добавить свои правила пунктуации:

```typescript
import { Marc21Formatter, PunctuationRule } from 'marc21-punctuation';

const customRule: PunctuationRule = {
  tag: '520',  // Поле аннотации
  apply: (field) => {
    // Ваша логика форматирования
    // ...
    return formattedSubfields;
  },
  description: 'Правило для форматирования аннотаций'
};

const formatter = new Marc21Formatter();
formatter.addRule(customRule);
```

## Лицензия

MIT