polish-number-to-words
Version:
Spell numbers using words in Polish | Napisz liczbę słownie po polsku
27 lines (26 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.currencyToWordsPL = void 0;
const integerToWords_1 = require("./integerToWords");
const pluralize_1 = require("./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.
*/
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 = (0, integerToWords_1.integerToWordsPL)(mainCurrencyNum, { explicitSingleThousand: true });
const subCurrencyStr = (0, integerToWords_1.integerToWordsPL)(subCurrencyNum);
const mainCurrencyWord = (0, pluralize_1.pluralizePl)(mainCurrencyNum, ...mainCurrencyWords);
const subCurrencyWord = (0, pluralize_1.pluralizePl)(subCurrencyNum, ...subCurrencyWords);
return `${isNegative ? 'minus ' : ''}${mainCurrencyStr} ${mainCurrencyWord} ${subCurrencyStr} ${subCurrencyWord}`;
}
exports.currencyToWordsPL = currencyToWordsPL;