aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js
diff options
context:
space:
mode:
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.js61
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);