1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| var Emitter = require('./Emitter');
| var isStr = require('./isStr');
| var isObj = require('./isObj');
| var each = require('./each');
| var toArr = require('./toArr');
| exports = Emitter.extend({
| initialize: function Store(data) {
| this.callSuper(Emitter, 'initialize', arguments);
| this._data = data || {};
| this.save(this._data);
| },
| set: function(key, val) {
| var data;
| if (isStr(key)) {
| data = {};
| data[key] = val;
| } else if (isObj(key)) {
| data = key;
| }
| var self = this;
| each(data, function(val, key) {
| var oldVal = self._data[key];
| self._data[key] = val;
| self.emit('change', key, val, oldVal);
| });
| this.save(this._data);
| },
| get: function(key) {
| var data = this._data;
| if (isStr(key)) return data[key];
| var ret = {};
| each(key, function(val) {
| ret[val] = data[val];
| });
| return ret;
| },
| remove: function(key) {
| key = toArr(key);
| var data = this._data;
| each(key, function(val) {
| delete data[val];
| });
| this.save(data);
| },
| clear: function() {
| this._data = {};
| this.save(this._data);
| },
| each: function(fn) {
| each(this._data, fn);
| },
|
| save: function(data) {
| this._data = data;
| }
| });
|
| module.exports = exports;
|
|