diff options
Diffstat (limited to 'atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js')
| -rw-r--r-- | atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js b/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js new file mode 100644 index 0000000..4235b96 --- /dev/null +++ b/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js @@ -0,0 +1,61 @@ +(function() { + var CompositeDisposable; + + module.exports = CompositeDisposable = (function() { + CompositeDisposable.prototype.disposed = false; + + + /* + Section: Construction and Destruction + */ + + function CompositeDisposable() { + var disposable, _i, _len; + this.disposables = []; + for (_i = 0, _len = arguments.length; _i < _len; _i++) { + disposable = arguments[_i]; + this.add(disposable); + } + } + + CompositeDisposable.prototype.dispose = function() { + var disposable, _i, _len, _ref; + if (!this.disposed) { + this.disposed = true; + _ref = this.disposables; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + disposable = _ref[_i]; + disposable.dispose(); + } + return this.clear(); + } + }; + + + /* + Section: Managing Disposables + */ + + CompositeDisposable.prototype.add = function(disposable) { + if (!this.disposed) { + return this.disposables.push(disposable); + } + }; + + CompositeDisposable.prototype.remove = function(disposable) { + var index; + index = this.disposables.indexOf(disposable); + if (index !== -1) { + return this.disposables.splice(index, 1); + } + }; + + CompositeDisposable.prototype.clear = function() { + return this.disposables.length = 0; + }; + + return CompositeDisposable; + + })(); + +}).call(this); |