UNPKG

n2d

Version:

A script to transform an integer of the order int > 0 && int <= 10^15, into its descriptive text form.

128 lines 12.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const dictionary_1 = require("./dictionary"); class n2d { static setPrefix(index, len) { switch (index) { case 0: return dictionary_1.order[len]; case 1: return dictionary_1.order[len - 1]; case 2: return dictionary_1.order[len - 2]; case 3: return dictionary_1.order[len - 3]; case 4: return dictionary_1.order[len - 4]; case 5: return dictionary_1.order[len - 5]; default: throw new Error("Really? Please stick to numbers in the order of quadrillion."); } } static translate(numbers, prefix) { let concat = ""; if (numbers.length <= 2) { if (dictionary_1.dict[numbers.join("")]) return dictionary_1.dict[numbers.join("")]; if (prefix) `${prefix} ${dictionary_1.dict[numbers[0] + "0"]} ${dictionary_1.dict[numbers[1]]}`; return `${dictionary_1.dict[numbers[0] + "0"]} ${dictionary_1.dict[numbers[1]]}`; } if (!prefix || !prefix.length) prefix = ""; if (dictionary_1.dict[numbers[1]] === "zero" && dictionary_1.dict[numbers[2]] === "zero") return prefix; concat = dictionary_1.dict[numbers[1]] === "zero" ? dictionary_1.dict[numbers[2]] : Number(numbers[1]) < 2 ? dictionary_1.dict[numbers[1] + numbers[2]] : dictionary_1.dict[numbers[1] + "0"]; if (dictionary_1.dict[numbers[2]] !== "zero" && dictionary_1.dict[numbers[1]] !== "zero" && Number(numbers[1]) >= 2) concat += ` ${dictionary_1.dict[numbers[2]]}`; return `${prefix}${concat}`.includes("zero") ? "" : `${prefix}${concat}`; } static progressionCheck(str) { for (let char of str) { if (char !== "0") return true; } return false; } static addAnd(str) { return str.concat(' and '); } static cleanString(str) { return str.replace(/\./gim, ""); } static convert(input) { let prefix = ""; let finalString = ""; input = n2d.cleanString(String(input)); if (input[0] === "0") return dictionary_1.dict[0]; const len = (input.length / 3).toFixed(1); if (isNaN(input) || !input.length) { throw new Error("Please enter a valid int > 0."); } let tripletsArr = []; let it = 0; let tripletsIndex = 0; for (let i = input.length - 1; i >= 0; i--) { if (it === 3) { tripletsIndex++; it = 0; } if (!Array.isArray(tripletsArr[tripletsIndex])) tripletsArr[tripletsIndex] = []; tripletsArr[tripletsIndex].push(input[i]); it++; } tripletsArr = tripletsArr.reverse(); let rCounter = 0; for (let e of tripletsArr) { tripletsArr[rCounter] = e.reverse(); rCounter++; } let index = 0; for (let triple of tripletsArr) { if (tripletsArr[index].length <= 2) { finalString = `${n2d.translate(triple)} `; if (index !== tripletsArr.length - 1) finalString += `${n2d.setPrefix(index, tripletsArr.length)} `; index++; if (tripletsArr.length === 1) break; else { if (finalString[finalString.length - 1] !== "") finalString += " "; continue; } } let aux = []; if (triple[0] === "0" && triple[1] === "0" && triple[2] === "0") { aux = triple; index++; continue; } else { finalString += `${n2d.translate([triple[0]])} hundred `; aux = triple.length > 1 ? triple.slice(1) : triple; } if (!n2d.progressionCheck(aux)) { if (tripletsArr.length === 1 || index === tripletsArr.length - 1) break; else { finalString += ` ${n2d.setPrefix(index, tripletsArr.length)}`; if (finalString[finalString.length - 1] !== "") finalString += " "; index++; continue; } } finalString += ' '; if (triple.length > 1) finalString += `${n2d.translate(triple, prefix)}`; if (index !== tripletsArr.length - 1) finalString += ` ${n2d.setPrefix(index, tripletsArr.length)}`; index++; if (finalString[finalString.length - 1] !== "") finalString += " "; } finalString = finalString.replace(/zero hundred/gim, ""); finalString = finalString.replace(/\s+/gim, " "); finalString = finalString.replace(/hundred hundred/gim, "hundred"); return finalString; } } exports.n2d = n2d; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibjJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL24yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUEyQztBQUkzQyxNQUFhLEdBQUc7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWEsRUFBRSxHQUFXO1FBQ3ZDLFFBQVEsS0FBSyxFQUFFO1lBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLGtCQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLGtCQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlCLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxrQkFBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sa0JBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLGtCQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlCLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxrQkFBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7U0FDNUY7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFpQixFQUFFLE1BQWU7UUFDL0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDckIsSUFBSSxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU07Z0JBQUMsR0FBRyxNQUFNLElBQUksaUJBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksaUJBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sR0FBRyxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDMUQ7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksaUJBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLElBQUksaUJBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDOUUsTUFBTSxHQUFHLGlCQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUksSUFBSSxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxpQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElB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