## Usage ```js var askWhen = require('ask-when'); var questions = require('base-questions'); var Base = require('base'); var app = new Base({isApp: true}); // register plugins app.use(questions()); app.use(askWhen()); ``` ## API ### askWhen The main export is a function that can be passed to `.use()`, if you want to register this as a plugin. ```js app.askWhen(name, options, cb); ``` **Params** - `name` **{String}**: question name - `options` **{Object|Function}**: Callback, or options object. If options, an "answer" value may be passed on `options[name]`. - `cb` **{Function}**: callback **Prerequisites** - [base-questions][]: the `base-questions` plugin must be registered before `ask-when` is registered - `isApp` must be defined on the instance (either define `app.isApp = true`, or pass `{isApp: true}` to the constructor. This prevents the plugin from loading on [invalid instances](https://github.com/node-base/is-valid-app)): **Register the plugin** ```js var askWhen = require('{%= name %}'); var questions = require('base-questions'); var Base = require('base'); var app = new Base({isApp: true}); // register plugins app.use(questions()); app.use(askWhen()); ``` **Example usage** ```js // define when app.options.askWhen = 'not-answered'; app.question('dest', 'Destination directory?', {default: process.cwd()}) .askWhen('dest', function(err, answers) { if (err) return console.log(err); console.log(answers) }); ``` ### .when Alternatively, a `.when` method is exposed if you don't want to register this as a plugin. ```js ask.when(app, name, val, cb); ``` **Params** - `app` **{Object}**: instance of [base][] (one of the applications listed in the [compatibility section](#compatibility)) - `name` **{String}**: question name - `options` **{Object|Function}**: Callback, or options object. If options, an "answer" value may be passed on `options[name]`. - `cb` **{Function}**: callback **Prerequisites** - [base-questions][]: the `base-questions` plugin must be registered before `ask-when` is registered ```js var ask = require('{%= name %}'); var askWhen = require('{%= name %}'); var questions = require('base-questions'); var Base = require('base'); var app = new Base({isApp: true}); // register the `base-questions` plugin first app.use(questions()); // ask questions app.question('dest', 'Destination directory?', {default: process.cwd()}) ask.when(app, 'dest', function(err, answers) { if (err) return console.log(err); console.log(answers) }); ``` ### Options This library wraps the `.ask` method from [base-questions][] to allow prompts to be conditionally skipped when one of the following values is defined on `options` (either on `app.options`, or options passed to `askWhen` directly) - `never`: the question will always be skipped - `always`: the question will always be asked - `not-answered`: the question will only be asked if a value is not already defined ## Compatibility Can be used with any of the following libs: * [question-cache][] * [question-store][] * [base][], when the [base-questions][] plugin is used * [assemble][], in your `assemblefile.js` * [generate][], in your `generator.js` * [update][], in your `updatefile.js` * [verb][], in your `verbfile.js`