UNPKG

polish-number-to-words

Version:

Spell numbers using words in Polish | Napisz liczbę słownie po polsku

23 lines (22 loc) 1.29 kB
import { integerToWordsPL } from './integerToWords'; import { pluralizePl } from './pluralize'; /** * Internal implementation for converting a currency number to Polish words. * Supports optional custom word forms for the main and subcurrency units. * * @param num The monetary value to convert. * @param mainCurrencyWords Optional main currency forms: [singular, 2–4, 5+]. * @param subCurrencyWords Optional subcurrency forms: [singular, 2–4, 5+]. * @returns Polish text representation of the currency amount. */ export function currencyToWordsPL(num, mainCurrencyWords = ['złoty', 'złote', 'złotych'], subCurrencyWords = ['grosz', 'grosze', 'groszy']) { const isNegative = num < 0; num = Math.abs(num); const mainCurrencyNum = Math.floor(num); const subCurrencyNum = Math.round((num % 1) * 100); const mainCurrencyStr = integerToWordsPL(mainCurrencyNum, { explicitSingleThousand: true }); const subCurrencyStr = integerToWordsPL(subCurrencyNum); const mainCurrencyWord = pluralizePl(mainCurrencyNum, ...mainCurrencyWords); const subCurrencyWord = pluralizePl(subCurrencyNum, ...subCurrencyWords); return `${isNegative ? 'minus ' : ''}${mainCurrencyStr} ${mainCurrencyWord} ${subCurrencyStr} ${subCurrencyWord}`; }