В российском документообороте принято писать сумму прописью. Такое должно быть в договорах, актах, расписках и других подобных документах. @vicimpa/rubles
призван решить эту проблему комплексно, он работает в браузере и на серверной стороне.
Установить через npm:
$ npm i --save @vicimpa/rubles
Просто подключаем и используем функцию format()
=)
const { format } = require('@vicimpa/rubles');
format(10.12) // "десять рублей двенадцать копеек"
Функция format()
первым аргументом принимает число в виде number
или string
и возвращает результат в виде string
. Число в формате string
может разделяться пробелами, табуляцией, нижним подчеркиванием (_
) или тире (-
).
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"
:
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
. Формат запятой. По умолчанию точка ('.'
)
Примеры:
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
Примеры:
const { joinWord } = require('@vicimpa/rubles')
joinWord(["пар","ней","ень","ня"], 0) // "парней"
joinWord(["пар","ней","ень","ня"], 1) // "парень"
joinWord(["пар","ней","ень","ня"], 2) // "парня"
Функция counterWord()
используется для правильного склонения по числительному.
Аргументы:
- input
string[]
. Набор из строк, где перая строка корень, остальные окончания. - counter
number
. Число, к которому Вы хотите склонить существительное.
Примеры:
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()
Примеры:
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
, то первая буква строки будет заглавной.
Примеры:
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
. Строка, над которой нужно произвести операцию.
Примеры:
const { firstUpper } = require('@vicimpa/rubles')
firstUpper("привет") // "Привет"
firstUpper("мой") // "Мой"
firstUpper("агА") // "Ага"
Там еще testFunction()
, но мне так лень расписывать. Почитайте исходник тут а примеры тут
Пожалуйста, создайте тикет — https://github.com/vicimpa/rubles/issues
Лицензия MIT, смотрите файл license.md
.