UNPKG

digit-to-words-nepali

Version:

A comprehensive TypeScript library for converting numbers to words in English and Nepali languages. Supports numbers up to 10^39 (Adanta Singhar), currency formatting, decimal handling with individual digit pronunciation, and BigInt. Zero dependencies, fu

42 lines (41 loc) 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unicodeToEnglishNumber = exports.digitMap = void 0; /** * Maps English digits to Nepali unicode digits. */ exports.digitMap = { '0': '०', '1': '१', '2': '२', '3': '३', '4': '४', '5': '५', '6': '६', '7': '७', '8': '८', '9': '९' }; // Reverse mapping for Nepali to English digits const nepaliToEnglishDigitMap = Object.fromEntries(Object.entries(exports.digitMap).map(([en, ne]) => [ne, en])); /** * Converts a string of Nepali unicode digits (०-९) to a JavaScript number. * Throws if input is not a valid Nepali digit string or exceeds safe integer. * @param numStr Nepali digit string * @returns number */ const unicodeToEnglishNumber = (numStr) => { const DIGIT_REGEX_NEPALI = /^[०-९]+$/; if (typeof numStr !== 'string' || numStr.length === 0) { throw new Error('Input must be a non-empty string'); } if (!DIGIT_REGEX_NEPALI.test(numStr)) { throw new Error('Input must contain only Nepali digits (०-९)'); } let englishStr = ''; for (const char of numStr) { const en = nepaliToEnglishDigitMap[char]; if (en === undefined) { throw new Error(`Invalid Nepali digit: ${char}`); } englishStr += en; } const num = Number(englishStr); if (!Number.isSafeInteger(num)) { throw new Error("Number exceeds maximum safe integer value"); } return num; }; exports.unicodeToEnglishNumber = unicodeToEnglishNumber;