UNPKG

n2words

Version:

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

57 lines (52 loc) 1.77 kB
import BaseLanguage from '../classes/base-language.js'; export class N2WordsKO extends BaseLanguage { constructor(options) { options = Object.assign({ negativeWord: '마이너스', separatorWord: '점', zero: '영' }, options); super(options, [ [10_000_000_000_000_000_000_000_000_000n, '양'], [1_000_000_000_000_000_000_000_000n, '자'], [100_000_000_000_000_000_000n, '해'], [10_000_000_000_000_000n, '경'], [1_000_000_000_000n, '조'], [100_000_000n, '억'], [10_000n, '만'], [1000n, '천'], [100n, '백'], [10n, '십'], [9n, '구'], [8n, '팔'], [7n, '칠'], [6n, '육'], [5n, '오'], [4n, '사'], [3n, '삼'], [2n, '이'], [1n, '일'], [0n, '영'] ]); } merge(lPair, rPair) { 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 <= 10_000) return { [rText]: rNumber }; else if (10_000 > lNumber && lNumber > rNumber) return { [`${lText}${rText}`]: lNumber + rNumber }; else if (lNumber >= 10_000 && lNumber > rNumber) return { [`${lText} ${rText}`]: lNumber + rNumber }; else 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 N2WordsKO(options).floatToCardinal(value); }