Caseless.js 902 B

1234567891011121314151617181920212223242526272829303132333435
  1. var Class = require('./Class');
  2. var lowerCase = require('./lowerCase');
  3. var keys = require('./keys');
  4. exports = Class({
  5. initialize: function(obj) {
  6. this._target = obj;
  7. },
  8. set: function(key, val) {
  9. var name = this.getKey(key);
  10. if (name) key = name;
  11. this._target[key] = val;
  12. },
  13. get: function(key) {
  14. key = this.getKey(key);
  15. if (key) {
  16. return this._target[key];
  17. }
  18. },
  19. getKey: function(key) {
  20. var name = lowerCase(key);
  21. var _keys = keys(this._target);
  22. for (var i = 0, len = _keys.length; i < len; i++) {
  23. var _key = _keys[i];
  24. if (lowerCase(_key) === name) return _key;
  25. }
  26. },
  27. remove: function(key) {
  28. delete this._target[this.getKey(key)];
  29. },
  30. has: function(key) {
  31. return !!this.getKey(key);
  32. }
  33. });
  34. module.exports = exports;