diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/state-toggle/index.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/state-toggle/index.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/state-toggle/index.js b/tools/node_modules/eslint/node_modules/state-toggle/index.js new file mode 100644 index 0000000000..d5aff1857f --- /dev/null +++ b/tools/node_modules/eslint/node_modules/state-toggle/index.js @@ -0,0 +1,45 @@ +/** + * @author Titus Wormer + * @copyright 2016 Titus Wormer + * @license MIT + * @module state-toggle + * @fileoverview Enter/exit a state. + */ + +'use strict'; + +/* eslint-env commonjs */ + +/* Expose. */ +module.exports = factory; + +/** + * Construct a state `toggler`: a function which inverses + * `property` in context based on its current value. + * The by `toggler` returned function restores that value. + * + * @param {string} key - Property to toggle. + * @param {boolean} state - Default state. + * @param {Object?} [ctx] - Context object. + * @return {Function} - Enter. + */ +function factory(key, state, ctx) { + /** + * Enter a state. + * + * @return {Function} - Exit state. + */ + return function () { + var context = ctx || this; + var current = context[key]; + + context[key] = !state; + + /** + * Cancel state to its value before entering. + */ + return function () { + context[key] = current; + }; + }; +} |