Skip to content

nmihalyov/decliner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

decliner.js

Мини-библиотека для склонения исчисляемых русских слов

decliner logo

Установка

NPM:

npm i decliner

Yarn

yarn add decliner

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

Импортируйте класс Decliner из пакета в нужный файл.

import Decliner from 'decliner'

Конструктор класса принимает два параметра:

  1. Массив склоняемых слов в формате
['рубль', 'рубля', 'рублей']
  1. Объект с настройками
{format: '{{num}} {{value}}'}

Примеры использования:

const decliner = new Decliner(['рубль', 'рубля', 'рублей']);

decliner.decline(1); // "рубль"
decliner.decline(2); // "рубля"
decliner.decline(5); // "рублей"
const decliner = new Decliner(['рубль', 'рубля', 'рублей'], {format: '{{num}} {{value}}'});

decliner.decline(1); // "1 рубль"
decliner.decline(2); // "2 рубля"
decliner.decline(5); // "5 рублей"

Настройки:

format

Строка, форматирующая возвращаемый методом decline результат, подстроки {{num}} и {{value}} заменяются на число и значение соответственно

format: '{{num}} {{value}}'

Методы

setOptions

Принимает объект, изменяющий настройки и возвращает текущий экземпляр класса.

const decliner = new Decliner(array, {format: '{{num}} {{value}}'});

decliner.setOptions({format: '{{value}} {{num}}'});

decline

Принимает число, по которому необходимо склонить слово из массива. Если форматирование не задано, то возвращает только слово из массива.

const decliner = new Decliner(['рубль', 'рубля', 'рублей']);

decliner.decline(50); // "рублей"

Дополнительно

decliner.js умеет работать и с отрицательными значениями:

decliner.decline(-50); // "-50 рублей"

И с вещественными числами:

decliner.decline(125.4); // "125.4 рубля"

Благодарность можно выразить поставив этому репозиторию звезду, а также зайдя в другие репозитории моего аккаунта

Обратная связь

Почта: nikita.mihalyov@gmail.com

Telegram: @nmihalyov

ВКонтакте: vk.com

Мой сайт: nmihalyov.tk

Написать issue