## Usage Use as a plugin with with your `base` application: ```js var Base = require('base'); var options = require('{%= name %}'); var base = new Base(); base.use(options()); // plugin // set an option app.option('a', 'b'); // set a nested property app.option('x.y', 'z'); // get an option console.log(app.option('x')); //=> {y: 'z'} ``` ## API ### .option Set or get an option. **Params** * `key` **{String}**: The option name. * `value` **{*}**: The value to set. * `returns` **{*}**: Returns a `value` when only `key` is defined. **Example** ```js app.option('a', true); app.option('a'); //=> true ``` ### .hasOption Return true if `options.hasOwnProperty(key)` **Params** * `prop` **{String}** * `returns` **{Boolean}**: True if `prop` exists. **Example** ```js app.hasOption('a'); //=> false app.option('a', 'b'); app.hasOption('a'); //=> true ``` ### .enable Enable `key`. **Params** * `key` **{String}** * `returns` **{Object}** `Options`: to enable chaining **Example** ```js app.enable('a'); ``` ### .disable Disable `key`. **Params** * `key` **{String}**: The option to disable. * `returns` **{Object}** `Options`: to enable chaining **Example** ```js app.disable('a'); ``` ### .enabled Check if `prop` is enabled (truthy). **Params** * `prop` **{String}** * `returns` **{Boolean}** **Example** ```js app.enabled('a'); //=> false app.enable('a'); app.enabled('a'); //=> true ``` ### .disabled Check if `prop` is disabled (falsey). **Params** * `prop` **{String}** * `returns` **{Boolean}**: Returns true if `prop` is disabled. **Example** ```js app.disabled('a'); //=> true app.enable('a'); app.disabled('a'); //=> false ``` ### .isTrue Returns true if the value of `prop` is strictly `true`. **Params** * `prop` **{String}** * `returns` **{Boolean}**: Uses strict equality for comparison. **Example** ```js app.option('a', 'b'); app.isTrue('a'); //=> false app.option('c', true); app.isTrue('c'); //=> true app.option({a: {b: {c: true}}}); app.isTrue('a.b.c'); //=> true ``` ### .isFalse Returns true if the value of `key` is strictly `false`. **Params** * `prop` **{String}** * `returns` **{Boolean}**: Uses strict equality for comparison. **Example** ```js app.option('a', null); app.isFalse('a'); //=> false app.option('c', false); app.isFalse('c'); //=> true app.option({a: {b: {c: false}}}); app.isFalse('a.b.c'); //=> true ``` ### .isBoolean Return true if the value of key is either `true` or `false`. **Params** * `key` **{String}** * `returns` **{Boolean}**: True if `true` or `false`. **Example** ```js app.option('a', 'b'); app.isBoolean('a'); //=> false app.option('c', true); app.isBoolean('c'); //=> true ``` {%= apidocs('index.js') %}