harfizer
Version:
> **Convert numbers, dates, and times into words — in 7+ languages, with style.**
176 lines (123 loc) • 8.57 kB
Markdown
# Harfizer — Прочитайте ваши числа, даты и время вслух (на любом языке)!
**Harfizer** — это мощный пакет для преобразования чисел, дат и времени в слова. Он использует плагины, специфичные для языка, что позволяет легко преобразовывать числовые и временные значения в их текстовое представление.
Если вы предпочитаете использовать другой язык, пожалуйста, нажмите на соответствующие ссылки, приведённые выше или в конце этого документа.
## Оглавление
- [Harfizer — Прочитайте ваши числа, даты и время вслух (на любом языке)!](#harfizer--прочитайте-ваши-числа-даты-и-время-вслух-на-любом-языке)
- [Оглавление](#оглавление)
- [Установка](#установка)
- [Использование](#использование)
- [Функции](#функции)
- [`convertNumber(input: InputNumber, options?: ConversionOptions): string`](#convertnumberinput-inputnumber-options-conversionoptions-string)
- [`convertTripleToWords(num: InputNumber, lexicon?: any, _separator?: string): string`](#converttripletowordsnum-inputnumber-lexicon-any-_separator-string-string)
- [`convertDateToWords(dateStr: string, calendar?: "jalali" | "gregorian"): string`](#convertdatetowordsdatestr-string-calendar-jalali--gregorian-string)
- [`convertTimeToWords(timeStr: string): string`](#converttimetowordstimestr-string-string)
- [Примеры](#примеры)
- [Дополнительные опции](#дополнительные-опции)
- [Документация по другим языковым плагинам](#документация-по-другим-языковым-плагинам)
- [Лицензия](#лицензия)
## Установка
Установите Harfizer через npm:
```bash
npm install harfizer
```
## Использование
Импортируйте плагин и класс `CoreConverter` из пакета:
```typescript
import { CoreConverter, RussianLanguagePlugin } from 'harfizer';
const russianPlugin = new RussianLanguagePlugin();
const converter = new CoreConverter(russianPlugin);
```
## Функции
### `convertNumber(input: InputNumber, options?: ConversionOptions): string`
Преобразует заданное число (целое или десятичное, возможно, отрицательное) в текстовую форму на русском языке. Десятичная часть обрабатывается по разрядам с использованием слова "запятая".
**Параметры:**
- **input:** число, числовая строка или bigint.
- **options (необязательно):** объект для настройки преобразования:
- `customZeroWord` – переопределяет слово для нуля.
- `customNegativeWord` – переопределяет слово для отрицательных чисел.
- `customSeparator` – переопределяет разделитель между токенами.
**Возвращаемое значение:**
Строка, представляющая число словами на русском.
**Пример:**
```typescript
converter.convertNumber("123");
// Вывод: "сто двадцать три"
converter.convertNumber("-456.78");
// Вывод: "минус четыреста пятьдесят шесть запятая семь восемь"
```
---
### `convertTripleToWords(num: InputNumber, lexicon?: any, _separator?: string): string`
Преобразует число до трёх цифр (или меньше) в его текстовую форму на русском языке.
**Параметры:**
- **num:** числовое значение (до 3 цифр).
**Возвращаемое значение:**
Строка, представляющая данное число словами (например, "четыреста пятьдесят шесть").
**Пример:**
```typescript
converter.convertTripleToWords(789);
// Вывод: "семьсот восемьдесят девять"
```
---
### `convertDateToWords(dateStr: string, calendar?: "jalali" | "gregorian"): string`
Преобразует строку даты в формате "YYYY/MM/DD" или "YYYY-MM-DD" в текстовую форму на русском языке. Выходной формат: "день месяц год года", где название месяца берётся на русском.
**Параметры:**
- **dateStr:** строка даты.
- **calendar (необязательно):** для русского используется "gregorian" (по умолчанию).
**Возвращаемое значение:**
Строка, представляющая дату словами.
**Пример:**
```typescript
converter.convertDateToWords("2023/04/05");
// Вывод: "пять апреля две тысячи двадцать третьего года"
```
*Примечание: точное представление может варьироваться в зависимости от реализации.*
---
### `convertTimeToWords(timeStr: string): string`
Преобразует строку времени в формате "HH:mm" в текстовую форму на русском языке.
Если минуты равны нулю, возвращается, например, "девять часов"; иначе – "девять часов пять минут".
**Параметры:**
- **timeStr:** строка времени в формате "HH:mm".
**Возвращаемое значение:**
Строка, представляющая время словами.
**Пример:**
```typescript
converter.convertTimeToWords("09:00");
// Вывод: "девять часов"
converter.convertTimeToWords("09:05");
// Вывод: "девять часов пять минут"
```
## Примеры
Ниже приведён пример использования `RussianLanguagePlugin` с `CoreConverter`:
```typescript
import { CoreConverter, RussianLanguagePlugin } from 'harfizer';
const russianPlugin = new RussianLanguagePlugin();
const converter = new CoreConverter(russianPlugin);
console.log(converter.convertNumber("123"));
// Вывод: "сто двадцать три"
console.log(converter.convertDateToWords("2023/04/05"));
// Вывод: "пять апреля две тысячи двадцать третьего года"
console.log(converter.convertTimeToWords("09:05"));
// Вывод: "девять часов пять минут"
```
## Дополнительные опции
Метод `convertNumber` принимает необязательный объект `ConversionOptions` для настройки преобразования:
```typescript
const options = {
customZeroWord: "ноль",
customNegativeWord: "минус",
customSeparator: " "
};
console.log(converter.convertNumber("-123", options));
// Вывод: "минус сто двадцать три"
```
## Документация по другим языковым плагинам
Для получения документации по плагинам на других языках, пожалуйста, обратитесь к следующим файлам:
- [🇬🇧 Документация по EnglishLanguagePlugin](../README.md)
- [🇮🇷 Документация по PersianLanguagePlugin](../docs/persian.md)
- [🇫🇷 Документация по FrenchLanguagePlugin](../docs/french.md)
- [🇯🇵 Документация по JapaneseLanguagePlugin](../docs/japanese.md)
- [🇨🇳 Документация по ChineseLanguagePlugin](../docs/chinese.md)
- [🇩🇪 Документация по GermanLanguagePlugin](../docs/german.md)
- [🇪🇸 Документация по SpanishLanguagePlugin](../docs/spanish.md)
## Лицензия
Этот пакет распространяется под лицензией MIT.