Skip to content

Commit

Permalink
Merge pull request #3 from anotherpit/v2.0.0
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
anotherpit authored Nov 11, 2023
2 parents 8785d5e + bfe1430 commit 0bf750e
Show file tree
Hide file tree
Showing 14 changed files with 4,460 additions and 1,569 deletions.
13 changes: 0 additions & 13 deletions .editorconfig

This file was deleted.

11 changes: 11 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"root": true,
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
]
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,4 @@ Network Trash Folder
Temporary Items
.apdisk

lib
104 changes: 0 additions & 104 deletions .npmignore

This file was deleted.

213 changes: 127 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,107 +2,148 @@

Написание числительных на русском языке с учётом пола и падежа.

# Установка
## Использование в NodeJS

```
npm install --save numeralize-ru
```

# API

### `numeralize(number, [gender, [kase, [animate]]])`

Возвращает числительное, соответствующее числу

+ `number` — число, для которого надо записать числительное;
+ `gender` — пол:
+ `numeralize.GENDER_MASCULINE` — мужской (по умолчанию);
+ `numeralize.GENDER_FEMININE` — женский;
+ `numeralize.GENDER_NEUTER` — средний;
+ `kase` — падеж (`case` является ключевым словом, поэтому не может быть использован в качестве имени переменной):
+ `numeralize.CASE_NOMINATIVE` — именительный (по умолчанию);
+ `numeralize.CASE_GENITIVE` — родительный;
+ `numeralize.CASE_DATIVE` — дательный;
+ `numeralize.CASE_ACCUSATIVE` — винительный;
+ `numeralize.CASE_INSTRUMENTAL` — творительный;
+ `numeralize.CASE_PREPOSITIONAL` — предложный;
+ `animate` — являются ли перечисляемые предметы одушевлёнными (влияет на форму винительного падежа некоторых числительных)

```javascript
const numeralize = require('numeralize-ru');

numeralize(5122981121);
// мужской род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать один'

numeralize(5122981121, numeralize.GENDER_FEMININE);
// женский род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать одна'

numeralize(5122981121, numeralize.GENDER_NEUTER);
// средний род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать одно'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_NOMINATIVE);
// мужской род, именительный падеж, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать один'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_GENITIVE);
// мужской род, родительный падеж, 'пяти миллиардов ста двадцати двух миллионов девятисот восьмидесяти одной тысячи ста двадцати одного'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_DATIVE);
// мужской род, дательный падеж, 'пяти миллиардам ста двадцати двум миллионам девятистам восьмидесяти одной тысяче ста двадцати одному'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_ACCUSATIVE);
// мужской род, винительный падеж, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одну тысячу сто двадцать один'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_ACCUSATIVE, true);
// мужской род, винительный падеж, одушевлённые предметы, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одну тысячу сто двадцать одного'
import {numeralize, Case, Gender} from "numeralize-ru";

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_INSTRUMENTAL);
// мужской род, творительный падеж, 'пятью миллиардами ста двадцатью двумя миллионами девятьюстами восемьюдесятью одной тысячей ста двадцатью одним'

numeralize(5122981121, numeralize.GENDER_MASCULINE, numeralize.CASE_PREPOSITIONAL);
// мужской род, творительный падеж, 'пяти миллиардах ста двадцати двух миллионах девятистах восьмидесяти одной тысяче ста двадцати одном'
console.log(numeralize(5122981121, Gender.Masculine, Case.Nominative));
```

### `numeralize.pluralize(count, one, two, five)`

Выбирает нужную форму существительного в зависимости от количества.

+ `count` — количество
+ `one` — форма существительного для одного предмета, например, _рубль_;
+ `two` — форма существительного для двух предметов, например, _рубля_;
+ `five` — форма существительного для пяти предметов, например, _рублей_;

```javascript
const pluralize = require('numeralize-ru').pluralize;

pluralize(0, 'рубль', 'рубля', 'рублей');
// 'рублей'
## Использование в [дореволюционных](https://caniuse.com/?search=ESM) браузерах

pluralize(1, 'рубль', 'рубля', 'рублей');
// 'рубль'

pluralize(2, 'рубль', 'рубля', 'рублей');
// 'рубля'

pluralize(5, 'рубль', 'рубля', 'рублей');
// 'рублей'

pluralize(11, 'рубль', 'рубля', 'рублей');
// 'рублей'

pluralize(21, 'рубль', 'рубля', 'рублей');
// 'рубль'
```html
<script src="https://unpkg.com/numeralize-ru/lib/index.browser.js"></script>
<script>
console.log(numeralize.numeralize(5122981121, numeralize.Gender.Feminine));
</script>
```

pluralize(22, 'рубль', 'рубля', 'рублей');
// 'рубля'
## API

```typescript
/**
* Возвращает числительное, соответствующее числу
*
* @param {number} number Целое число, для которого надо записать числительное
*
* @param {Gender} [gender=Gender.Masculine] Пол:
* - {@link Gender.Masculine} – мужской (по умолчанию);
* - {@link Gender.Feminine} – женский;
* - {@link Gender.Neuter} – средний.
*
* @param {Case} [kase=Case.Nominative] Падеж
* (`case` является ключевым словом, поэтому не может быть использован в качестве имени переменной):
* - {@link Case.Nominative} — именительный (по умолчанию);
* - {@link Case.Genitive} — родительный;
* - {@link Case.Dative} — дательный;
* - {@link Case.Accusative} — винительный;
* - {@link Case.Instrumental} — творительный;
* - {@link Case.Prepositional} — предложный.
*
* @param {boolean} [animate=false] Являются ли перечисляемые предметы одушевлёнными
* (влияет на форму винительного падежа некоторых числительных)
*
* @example
* // мужской род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать один'
* numeralize(5122981121);
*
* @example
* // женский род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать одна'
* numeralize(5122981121, Gender.Feminine);
*
* @example
* // средний род, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать одно'
* numeralize(5122981121, Gender.Neuter);
*
* @example
* // мужской род, именительный падеж, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одна тысяча сто двадцать один'
* numeralize(5122981121, Gender.Masculine, Case.Nominative);
*
* @example
* // мужской род, родительный падеж, 'пяти миллиардов ста двадцати двух миллионов девятисот восьмидесяти одной тысячи ста двадцати одного'
* numeralize(5122981121, Gender.Masculine, Case.Genitive);
*
* @example
* // мужской род, дательный падеж, 'пяти миллиардам ста двадцати двум миллионам девятистам восьмидесяти одной тысяче ста двадцати одному'
* numeralize(5122981121, Gender.Masculine, Case.Dative);
*
* @example
* // мужской род, винительный падеж, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одну тысячу сто двадцать один'
* numeralize(5122981121, Gender.Masculine, Case.Accusative);
*
* @example
* // мужской род, винительный падеж, одушевлённые предметы, 'пять миллиардов сто двадцать два миллиона девятьсот восемьдесят одну тысячу сто двадцать одного'
* numeralize(5122981121, Gender.Masculine, Case.Accusative, true);
*
* @example
* // мужской род, творительный падеж, 'пятью миллиардами ста двадцатью двумя миллионами девятьюстами восемьюдесятью одной тысячей ста двадцатью одним'
* numeralize(5122981121, Gender.Masculine, Case.Instrumental);
*
* @example
* // мужской род, творительный падеж, 'пяти миллиардах ста двадцати двух миллионах девятистах восьмидесяти одной тысяче ста двадцати одном'
* numeralize(5122981121, Gender.Masculine, Case.Prepositional);
*/
declare function numeralize(
number: number,
gender: Gender = Gender.Masculine,
kase: Case = Case.Nominative,
animate: boolean = false
): string;

/**
* Выбирает нужную форму существительного в зависимости от количества.
*
* @param {number} count Количество
* @param {string} one Форма существительного для одного предмета, например, «рубль»;
* @param {string} two Форма существительного для двух предметов, например, «рубля»;
* @param {string} five Форма существительного для пяти предмета, например, «рублей»;
*
* @example
* // 'рублей'
* pluralize(0, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рубль'
* pluralize(1, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рубля'
* pluralize(2, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рублей'
* pluralize(5, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рублей'
* pluralize(11, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рубль'
* pluralize(21, 'рубль', 'рубля', 'рублей');
*
* @example
* // 'рубля'
* pluralize(22, 'рубль', 'рубля', 'рублей');
*/
declare function pluralize(count: number, one: string, two: string, five: string): string
```

## Спонсорство

[Стать первым спонсором проекта](https://github.com/sponsors/anotherpit)

# Roadmap
## Roadmap

+ Порядковые числительные (ordinal numerals): _первый_, _вторым_, _третьими_ и т.д.
+ Собирательные числительные (collective numerals): _трое_, _четверых_, _пятерыми_ и т.д.
+ Особые формы единственного и множественного числа: _одни сутки_, _два дня_, _пять суток_ и т.д.
* Порядковые числительные (ordinal numerals): _первый_, _вторым_, _третьими_ и т.д.
* Собирательные числительные (collective numerals): _трое_, _четверых_, _пятерыми_ и т.д.
* Особые формы единственного и множественного числа: _одни сутки_, _два дня_, _пять суток_ и т.д.

# См.также
## См.также

+ Подробно о склонении числительных в русском языке с примерами: http://numeralonline.ru/
20 changes: 0 additions & 20 deletions index.d.ts

This file was deleted.

Loading

0 comments on commit 0bf750e

Please sign in to comment.