flag.js 787 B

1234567891011121314151617181920212223242526272829303132
  1. /*!
  2. * Chai - flag utility
  3. * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
  4. * MIT Licensed
  5. */
  6. /**
  7. * ### flag(object, key, [value])
  8. *
  9. * Get or set a flag value on an object. If a
  10. * value is provided it will be set, else it will
  11. * return the currently set value or `undefined` if
  12. * the value is not set.
  13. *
  14. * utils.flag(this, 'foo', 'bar'); // setter
  15. * utils.flag(this, 'foo'); // getter, returns `bar`
  16. *
  17. * @param {Object} object constructed Assertion
  18. * @param {String} key
  19. * @param {Mixed} value (optional)
  20. * @name flag
  21. * @api private
  22. */
  23. module.exports = function (obj, key, value) {
  24. var flags = obj.__flags || (obj.__flags = Object.create(null));
  25. if (arguments.length === 3) {
  26. flags[key] = value;
  27. } else {
  28. return flags[key];
  29. }
  30. };