UNPKG

n2words

Version:

n2words converts a numerical number into a written one, supports 28 languages and has zero dependencies.

78 lines (73 loc) 2.49 kB
import BaseLanguage from '../classes/base-language.js'; export class N2WordsNO extends BaseLanguage { constructor(options) { options = Object.assign({ negativeWord: 'minus', separatorWord: 'komma', zero: 'null' }, options); super(options, [ [1_000_000_000_000_000_000_000_000_000_000_000n, 'quintillard'], [1_000_000_000_000_000_000_000_000_000_000n, 'quintillion'], [1_000_000_000_000_000_000_000_000_000n, 'quadrillard'], [1_000_000_000_000_000_000_000_000n, 'quadrillion'], [1_000_000_000_000_000_000_000n, 'trillard'], [1_000_000_000_000_000_000n, 'trillion'], [1_000_000_000_000_000n, 'billard'], [1_000_000_000_000n, 'billion'], [1_000_000_000n, 'millard'], [1_000_000n, 'million'], [1000n, 'tusen'], [100n, 'hundre'], [90n, 'nitti'], [80n, 'åtti'], [70n, 'sytti'], [60n, 'seksti'], [50n, 'femti'], [40n, 'førti'], [30n, 'tretti'], [20n, 'tjue'], [19n, 'nitten'], [18n, 'atten'], [17n, 'sytten'], [16n, 'seksten'], [15n, 'femten'], [14n, 'fjorten'], [13n, 'tretten'], [12n, 'tolv'], [11n, 'elleve'], [10n, 'ti'], [9n, 'ni'], [8n, 'åtte'], [7n, 'syv'], [6n, 'seks'], [5n, 'fem'], [4n, 'fire'], [3n, 'tre'], [2n, 'to'], [1n, 'en'], [0n, 'null'] ]); } merge(lPair, rPair) { // {'one':1}, {'hundred':100} const lText = Object.keys(lPair)[0]; const rText = Object.keys(rPair)[0]; const lNumber = BigInt(Object.values(lPair)[0]); const rNumber = BigInt(Object.values(rPair)[0]); if (lNumber == 1 && rNumber < 100) return { [rText]: rNumber }; else if (lNumber < 100 && lNumber > rNumber) return { [`${lText}-${rText}`]: lNumber + rNumber }; else if (lNumber >= 100 && rNumber < 100) return { [`${lText} og ${rText}`]: lNumber + rNumber }; else if (rNumber > lNumber) return { [`${lText} ${rText}`]: lNumber * rNumber }; return { [`${lText}, ${rText}`]: lNumber + rNumber }; } } /** * Converts a value to cardinal (written) form. * @param {number|string|bigint} value Number to be convert. * @param {object} [options] Options for class. * @returns {string} Value in cardinal (written) format. * @throws {Error} Value cannot be invalid. */ export default function floatToCardinal (value, options = {}) { return new N2WordsNO(options).floatToCardinal(value); }