0.1.8 • Published 2 years ago

@vicimpa/rubles v0.1.8

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@vicimpa/rubles — стоимость прописью

В российском документообороте принято писать сумму прописью. Такое должно быть в договорах, актах, расписках и других подобных документах. @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(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.

0.1.2

2 years ago

0.1.1

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago