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
JavaScript
;
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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