You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
902 B
36 lines
902 B
2 years ago
|
var Class = require('./Class');
|
||
|
var lowerCase = require('./lowerCase');
|
||
|
var keys = require('./keys');
|
||
|
exports = Class({
|
||
|
initialize: function(obj) {
|
||
|
this._target = obj;
|
||
|
},
|
||
|
set: function(key, val) {
|
||
|
var name = this.getKey(key);
|
||
|
if (name) key = name;
|
||
|
this._target[key] = val;
|
||
|
},
|
||
|
get: function(key) {
|
||
|
key = this.getKey(key);
|
||
|
if (key) {
|
||
|
return this._target[key];
|
||
|
}
|
||
|
},
|
||
|
getKey: function(key) {
|
||
|
var name = lowerCase(key);
|
||
|
var _keys = keys(this._target);
|
||
|
for (var i = 0, len = _keys.length; i < len; i++) {
|
||
|
var _key = _keys[i];
|
||
|
if (lowerCase(_key) === name) return _key;
|
||
|
}
|
||
|
},
|
||
|
remove: function(key) {
|
||
|
delete this._target[this.getKey(key)];
|
||
|
},
|
||
|
has: function(key) {
|
||
|
return !!this.getKey(key);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = exports;
|