UNPKG

@vicimpa/rubles

Version:
178 lines (136 loc) 12.1 kB
# @vicimpa/rubles — стоимость прописью В российском документообороте принято писать сумму прописью. Такое должно быть в договорах, актах, расписках и других подобных документах. `@vicimpa/rubles` призван решить эту проблему комплексно, он работает в браузере и на серверной стороне. #### Установить через [npm](//npmjs.org): ```bash $ npm i --save @vicimpa/rubles ``` #### Как использовать: Просто подключаем и используем функцию `format()` =) ```js const { format } = require('@vicimpa/rubles'); format(10.12) // "десять рублей двенадцать копеек" ``` Функция `format()` первым аргументом принимает число в виде `number` или `string` и возвращает результат в виде `string`. Число в формате `string` может разделяться пробелами, табуляцией, нижним подчеркиванием (`_`) или тире (`-`). ```js const { format } = require('@vicimpa/rubles'); format("1_234.54") // "одна тысяча двести тридцать четыре рубля пятьдесят четыре копейки" format("1 421 234.43") // "один миллион четыреста двадцать одна тысяча двести тридцать четыре рубля сорок три копейки" format("41-214.94") // "сорок одна тысяча двести четырнадцать рублей девяносто четыре копейки" ``` Вторым аргументом функция может принять нужный Вам формат в виде `string`, в котором вставите строку с переменными в формате `"$var1 $var2"` (привет от бывшего phpШника =D). Чтобы написать вывод строки с большой буквы, используйте имя переменной с большой буквы =D. Ниже примеры значений. По умолчанию значение аргумента с форматом `"$summString $summCurrency $pennyString $pennyCurrency"`: ```js const { format } = require('@vicimpa/rubles'); format(0) // "ноль рублей ноль копеек" format(10.12) // "десять рублей двенадцать копеек" format("1_234.54") // "одна тысяча двести тридцать четыре рубля пятьдесят четыре копейки" format("1 421 234.43") // "один миллион четыреста двадцать одна тысяча двести тридцать четыре рубля сорок три копейки" format("41-214.94") // "сорок одна тысяча двести четырнадцать рублей девяносто четыре копейки" format(123.12, "$input") // "123.12" format(123.12, "$summ") // "123" format(123.12, "$summString") // "сто двадцать три" format(123.12, "$summCurrency") // "рубля" format(123.12, "$penny") // "12" format(123.12, "$pennyString") // "двенадцать" format(123.12, "$pennyCurrency") // "копеек" format(123.12, "$SummString") // "Сто двадцать три" format(123.12, "$SummCurrency") // "Рубля" format(123.12, "$PennyString") // "Двенадцать" format(123.12, "$PennyCurrency") // "Копеек" ``` #### Дополнения: Как и в любом деле, есть сопуствующий ущерб =). В данном случае в виде дополнительный функций. Функция `numberFormat()` необходима для форматирования чисел по заданному формату. Аргументы: - input `string | number`. Такой же как и в `format()` - sep? `string`. Разделитель числительного `1 000`. По умолчанию пробел (`' '`) - precision? `number`. Точность отображения числа после запятой. По умолчанию `2` - dot? `string`. Формат запятой. По умолчанию точка (`'.'`) Примеры: ```js const { numberFormat } = require('@vicimpa/rubles') numberFormat(1000) // "1 000" numberFormat(4123.12, "-") // "4-123.12" numberFormat(1321.123, "/", 2) // "1/321.12" numberFormat(135321.833, "_", 2, ",") // "135_321,83" ``` Функция `joinWord()` используется для соединения корня с одним из окончаний слова. Аргументы: - input `string[]`. Набор из строк, где перая строка корень, остальные окончания. - index? `number`. Индекс окончания слова в массиве после корня. По умолчанию `0` Примеры: ```js const { joinWord } = require('@vicimpa/rubles') joinWord(["пар","ней","ень","ня"], 0) // "парней" joinWord(["пар","ней","ень","ня"], 1) // "парень" joinWord(["пар","ней","ень","ня"], 2) // "парня" ``` Функция `counterWord()` используется для правильного склонения по числительному. Аргументы: - input `string[]`. Набор из строк, где перая строка корень, остальные окончания. - counter `number`. Число, к которому Вы хотите склонить существительное. Примеры: ```js const { counterWord } = require('@vicimpa/rubles') counterWord(["пар","ней","ень","ня"], 0) // "парней" counterWord(["пар","ней","ень","ня"], 1) // "парень" counterWord(["пар","ней","ень","ня"], 2) // "парня" counterWord(["пар","ней","ень","ня"], 4) // "парня" counterWord(["пар","ней","ень","ня"], 6) // "парней" counterWord(["пар","ней","ень","ня"], 10) // "парней" counterWord(["пар","ней","ень","ня"], 12) // "парней" counterWord(["пар","ней","ень","ня"], 11) // "парней" counterWord(["пар","ней","ень","ня"], 21) // "парень" counterWord(["пар","ней","ень","ня"], 32) // "парня" counterWord(["пар","ней","ень","ня"], 101) // "парень" ``` Функция `parseNumber()` используется парсинга числа из строки и числа на 2 части. Аргументы: - input `number | string`. Число, которое Вы хотите распарсить. Число может быть таким же, что и в `format()` Примеры: ```js const { parseNumber } = require('@vicimpa/rubles') parseNumber(1000) // ["1000"] parseNumber(0.123) // ["0","123"] parseNumber("123.12") // ["123","12"] parseNumber("1 520 . 34") // ["1520","34"] parseNumber("1_432_123") // ["1432123"] ``` Функция `numbersInWords()` используется для перевода числа в строковую транскрипцию. Аргументы: - input `number | string`. Число, которое Вы хотите перевести. Число может быть таким же, что и в `format()`. **Данная функция переводит только целую часть!** - com? `boolean`. Если выставить `true`, то функция просклоняет младший числитель на первом разряде, а не на втором. - upper? `boolean`. Если выставить `true`, то первая буква строки будет заглавной. Примеры: ```js const { numbersInWords } = require('@vicimpa/rubles') numbersInWords(0) // "ноль" numbersInWords(10.12) // "Десять" numbersInWords("1_234.54") // "Одна тысяча двести тридцать четыре" numbersInWords("1 421 234.43") // "Один миллион четыреста двадцать одна тысяча двести тридцать четыре" numbersInWords("41-214.94") // "Сорок одна тысяча двести четырнадцать" numbersInWords(1) // "Один" numbersInWords(2) // "Два" numbersInWords(1, true) // "Одна" numbersInWords(2, true) // "Две" numbersInWords("15213.28", false, true) // "Пятнадцать тысяч двести тринадцать" numbersInWords("12351.23", true, true) // "Двенадцать тысяч триста пятьдесят одна" ``` Функция `firstUpper()` используется вывода в строке первой заглавной буквы. Аргументы: - input `string`. Строка, над которой нужно произвести операцию. Примеры: ```js const { firstUpper } = require('@vicimpa/rubles') firstUpper("привет") // "Привет" firstUpper("мой") // "Мой" firstUpper("агА") // "Ага" ``` Там еще `testFunction()`, но мне так лень расписывать. Почитайте исходник [тут](/src/lib/testFunction.ts) а примеры [тут](/src/test.ts) ---------------- ### Нашли ошибку? Пожалуйста, создайте тикет — https://github.com/vicimpa/rubles/issues ## Авторы * [PromiSe####](mailto:vicimpa@ya.ru), [vicimpa.gitgub.io](http://vicimpa.gitgub.io) * [Алексей Симоненко](mailto:alexey@simonenko.su), [simonenko.su](http://simonenko.su) ## Лицензия Лицензия MIT, смотрите файл `license.md`.