| /*! |
| * Chai - flag utility |
| * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> |
| * MIT Licensed |
| */ |
| |
| /** |
| * ### .flag(object, key, [value]) |
| * |
| * Get or set a flag value on an object. If a |
| * value is provided it will be set, else it will |
| * return the currently set value or `undefined` if |
| * the value is not set. |
| * |
| * utils.flag(this, 'foo', 'bar'); // setter |
| * utils.flag(this, 'foo'); // getter, returns `bar` |
| * |
| * @param {Object} object constructed Assertion |
| * @param {String} key |
| * @param {Mixed} value (optional) |
| * @namespace Utils |
| * @name flag |
| * @api private |
| */ |
| |
| module.exports = function flag(obj, key, value) { |
| var flags = obj.__flags || (obj.__flags = Object.create(null)); |
| if (arguments.length === 3) { |
| flags[key] = value; |
| } else { |
| return flags[key]; |
| } |
| }; |