UNPKG

mk-calculator

Version:
100 lines (87 loc) 2.39 kB
#!/usr/bin/env node import inquirer from "inquirer"; import chalk from "chalk"; import chalkAnimation from "chalk-animation"; const sleep = (ms = 2000) => new Promise<void>((r) => setTimeout(r, ms)); async function welcome() { const welcomeMessage = chalkAnimation.rainbow( `Welcome To Muhammad Khubaib's Calculator\n` ); await sleep(); welcomeMessage.stop(); } await welcome(); let restartCalc = true; do { const answer = await inquirer.prompt([ { name: "operator", type: "list", message: "Please select your desire Operation: ", choices: [ "Addition", "Subtraction", "Multiplication", "Division", "x Raise to the Power y", ], }, { name: "firstNumber", type: "number", message: "Please Enter first Number: ", }, { name: "secondNumber", type: "number", message: "Please Enter Second Number: ", }, ]); if (!isNaN(answer.firstNumber) && !isNaN(answer.secondNumber)) { let result: number = calculation( answer.operator, answer.firstNumber, answer.secondNumber ); if (answer.operator === "x Raise to the Power y") { console.log( chalk.greenBright( `${answer.firstNumber} raise to the power ${answer.secondNumber} is: ${result}` ) ); } else { console.log(chalk.greenBright(`Answer: ${result}`)); } } else { console.log(chalk.redBright(`Wrong Entry, You must enter Numbers Only!`)); } const restart = await inquirer.prompt([ { name: "reset", type: "input", message: "Do you want to continue operation: Y/N", }, ]); restartCalc = restart.reset === "Y" || restart.reset === "y" || restart.reset === "Yes" || restart.reset === "yes" ? true : false; } while (restartCalc); function calculation(opt: string, numFirst: number, numSecond: number): number { switch (opt) { case "Addition": return numFirst + numSecond; case "Subtraction": return numFirst - numSecond; case "Multiplication": return numFirst * numSecond; case "Division": return numFirst / numSecond; case "x Raise to the Power y": return numFirst ** numSecond; } return 0; }