import * as readline from 'readline'

// start reusable code
async function input(prompt = "") {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    })

    return new Promise((resolve, _) => {
        rl.setPrompt(prompt)
        // show user the question
        rl.prompt()
        // listen for user answer, 
        // callback is triggered as soon as user hits enter key
        rl.on('line', answer => {
            rl.close()
            // resolve the promise, with the input the user entered
            resolve(answer)
        })
    })
}

function println(message = "", align = "left"){
    let padColCount = 0
    if(align === "center"){
        // calculate the amount of spaces required to center the message
        // process.stdout.columns is the number of spaces per line in the terminal
        padColCount = Math.round(process.stdout.columns / 2 + message.length / 2)
    }
    console.log(message.padStart(padColCount, " "))
}
// end reusable code


function equalIgnoreCase(correct, provided){
    return correct.toString().toLowerCase() === provided.toString().toLowerCase()
}

async function evaluateQuestion(question, answerOptions, correctAnswer, correctMessage, wrongMessage){
    // ask the user to answer the given question
    // this is a blocking wait
    const answer = await input(question + "\n" + answerOptions + "\n")
    const isCorrect = equalIgnoreCase(correctAnswer, answer)
    println(isCorrect ? correctMessage : wrongMessage)
    return isCorrect ? 1 : 0
}

async function main(){
    let score = 0
    println("LITERATURE QUIZ", "center")
    println("CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY", "center")
    println();println();println()

    score += await evaluateQuestion("IN PINOCCHIO, WHAT WAS THE NAME OF THE CAT?", 
        "1)TIGGER, 2)CICERO, 3)FIGARO, 4)GUIPETTO", 3,
        "VERY GOOD!  HERE'S ANOTHER.", "SORRY...FIGARO WAS HIS NAME.")
    println()

    score += await evaluateQuestion("FROM WHOSE GARDEN DID BUGS BUNNY STEAL THE CARROTS?", 
        "1)MR. NIXON'S, 2)ELMER FUDD'S, 3)CLEM JUDD'S, 4)STROMBOLI'S", 2,
        "PRETTY GOOD!", "TOO BAD...IT WAS ELMER FUDD'S GARDEN.")
    println()

    score += await evaluateQuestion("IN THE WIZARD OF OS, DOROTHY'S DOG WAS NAMED",
        "1)CICERO, 2)TRIXIA, 3)KING, 4)TOTO", 4,
        "YEA!  YOU'RE A REAL LITERATURE GIANT.",
        "BACK TO THE BOOKS,...TOTO WAS HIS NAME.")
    println()

    score += await evaluateQuestion("WHO WAS THE FAIR MAIDEN WHO ATE THE POISON APPLE",
        "1)SLEEPING BEAUTY, 2)CINDERELLA, 3)SNOW WHITE, 4)WENDY", 3,
        "GOOD MEMORY!", "OH, COME ON NOW...IT WAS SNOW WHITE.")

    println();println()

    if(score === 4) {
        println("WOW!  THAT'S SUPER!  YOU REALLY KNOW YOUR NURSERY\n"+
        "YOUR NEXT QUIZ WILL BE ON 2ND CENTURY CHINESE\n"+
        "LITERATURE (HA, HA, HA)")
    } else if(score <= 2){
        println("UGH.  THAT WAS DEFINITELY NOT TOO SWIFT.  BACK TO\n" +
        "NURSERY SCHOOL FOR YOU, MY FRIEND.")
    } else {
        println("NOT BAD, BUT YOU MIGHT SPEND A LITTLE MORE TIME\n"+
        "READING THE NURSERY GREATS.")
    }
}

main()