You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
const SelectPrompt = require('./select');
class Quiz extends SelectPrompt { constructor(options) { super(options); if (typeof this.options.correctChoice !== 'number' || this.options.correctChoice < 0) { throw new Error('Please specify the index of the correct answer from the list of choices'); } }
async toChoices(value, parent) { let choices = await super.toChoices(value, parent); if (choices.length < 2) { throw new Error('Please give at least two choices to the user'); } if (this.options.correctChoice > choices.length) { throw new Error('Please specify the index of the correct answer from the list of choices'); } return choices; }
check(state) { return state.index === this.options.correctChoice; }
async result(selected) { return { selectedAnswer: selected, correctAnswer: this.options.choices[this.options.correctChoice].value, correct: await this.check(this.state) }; } }
module.exports = Quiz;
|