UNPKG

flexible-currency-to-words

Version:

A flexible, CommonJS-compatible library to convert numbers to words for currencies, supporting Indian and Western number formats, customizable currency units, decimal places, and extended range up to 999,999,999,999,999,999 (arab crore). Ideal for financi

84 lines (64 loc) โ€ข 2.76 kB
# ๐Ÿ’ฌ Flexible Number to Words Converter A CommonJS-compatible library to convert numbers to words for currencies. Supports both **Indian** and **Western** number systems with customizable currency units, decimal precision, and more. Handles extremely large numbers (up to **999,999,999,999,999,999**) โ€” ideal for global finance apps. --- ## โœจ Features - โœ… Converts numbers to words for **any currency** (e.g., Rupees, Dollars, Yen) - โœ… Supports **Indian** (`12,34,56,789`) and **Western** (`123,456,789`) number formats - โœ… Customizable options: - Currency name (e.g., `RUPEES`, `DOLLARS`) - Fractional unit (e.g., `PAISE`, `CENTS`) - Decimal precision - Output suffix (e.g., `ONLY`) - โœ… Handles numbers up to **999 QUADRILLION** - โœ… Graceful handling of invalid inputs - โœ… 30+ unit tests for edge cases and consistency - โœ… Fully **Node.js/CommonJS compatible** --- ## ๐Ÿ“ฆ Installation ```bash npm install flexible-number-to-words ๐Ÿš€ Usage js Copy Edit const numberToWord = require('flexible-number-to-words'); // Default: Indian Rupees console.log(numberToWord(254584.255)); // โžœ TWO LAKH FIFTY-FOUR THOUSAND FIVE HUNDRED EIGHTY-FOUR RUPEES AND TWENTY-SIX PAISE ONLY // US Dollars with Western format console.log(numberToWord(254584.255, { currency: 'DOLLARS', fractionalUnit: 'CENTS', numberFormat: 'western' })); // โžœ TWO HUNDRED FIFTY-FOUR THOUSAND FIVE HUNDRED EIGHTY-FOUR DOLLARS AND TWENTY-SIX CENTS ONLY // Large number example console.log(numberToWord(1234567890123456)); // โžœ ONE ARAB TWENTY-THREE THOUSAND FOUR HUNDRED FIFTY-SIX CRORE SEVENTY-EIGHT LAKH NINETY THOUSAND ONE HUNDRED TWENTY-THREE RUPEES ONLY // Custom decimal precision console.log(numberToWord(123456.789, { decimalPlaces: 3 })); // โžœ ONE LAKH TWENTY-THREE THOUSAND FOUR HUNDRED FIFTY-SIX RUPEES AND SEVEN HUNDRED EIGHTY-NINE PAISE ONLY โš™๏ธ Options Option Type Description Default currency string Major unit name (e.g., RUPEES, DOLLARS) RUPEES fractionalUnit string Minor unit name (e.g., PAISE, CENTS) PAISE decimalPlaces number Decimal precision to be converted to words 2 numberFormat string Format style: 'indian' or 'western' indian separator string Thousands separator (e.g., ',', '.') , suffix string Text appended at the end of result ONLY ๐Ÿงช Testing Run tests using Jest: bash Copy Edit npm test Test suite includes: Edge cases Decimal rounding Format validation Singular/plural correctness Input sanitization ๐Ÿค Contributing We welcome contributions! Please open an issue or submit a pull request via GitHub. Add tests for any new features or fixes. ๐Ÿ“„ License MIT License โ€” feel free to use, modify, and distribute.