UNPKG

n2words

Version:

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

65 lines (61 loc) 1.9 kB
import BaseLanguage from '../classes/base-language.js'; export class N2WordsTR extends BaseLanguage { constructor(options = {}) { super(Object.assign({ negativeWord: 'eksi', separatorWord: 'virgül', zero: 'sıfır', spaceSeparator: (options.dropSpaces === true ? '' : ' '), }, options), [ [1_000_000_000_000_000_000n, 'kentilyon'], [1_000_000_000_000_000n, 'katrilyon'], [1_000_000_000_000n, 'trilyon'], [1_000_000_000n, 'milyar'], [1_000_000n, 'milyon'], [1000n, 'bin'], [100n, 'yüz'], [90n, 'doksan'], [80n, 'seksen'], [70n, 'yetmiş'], [60n, 'altmış'], [50n, 'elli'], [40n, 'kırk'], [30n, 'otuz'], [20n, 'yirmi'], [10n, 'on'], [9n, 'dokuz'], [8n, 'sekiz'], [7n, 'yedi'], [6n, 'altı'], [5n, 'beş'], [4n, 'dört'], [3n, 'üç'], [2n, 'iki'], [1n, 'bir'], [0n, 'sıfır'] ]); } 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 <= 100 || rNumber == 1000)) { return { [rText]: rNumber }; } else if (rNumber > lNumber) { return { [`${lText}${this.spaceSeparator}${rText}`]: lNumber * rNumber }; } else { return { [`${lText}${this.spaceSeparator}${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 N2WordsTR(options).floatToCardinal(value); }