diff options
| author | Ben Beltran <ben@nsovocal.com> | 2015-07-10 11:12:25 -0500 |
|---|---|---|
| committer | Ben Beltran <ben@nsovocal.com> | 2015-07-10 11:12:25 -0500 |
| commit | 24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a (patch) | |
| tree | ded312222bb108923da1820ba40b04d710d20e5b /atom/packages/ex-mode/node_modules/event-kit/lib | |
| parent | eb786e82d170e2abc351a432ade616d6ecdeeb6b (diff) | |
Adds atom
Diffstat (limited to 'atom/packages/ex-mode/node_modules/event-kit/lib')
4 files changed, 183 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); diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js b/atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js new file mode 100644 index 0000000..4ccb3da --- /dev/null +++ b/atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js @@ -0,0 +1,34 @@ +(function() { + var Disposable, Grim; + + Grim = require('grim'); + + module.exports = Disposable = (function() { + Disposable.prototype.disposed = false; + + + /* + Section: Construction and Destruction + */ + + function Disposable(disposalAction) { + this.disposalAction = disposalAction; + } + + Disposable.prototype.dispose = function() { + if (!this.disposed) { + this.disposed = true; + return typeof this.disposalAction === "function" ? this.disposalAction() : void 0; + } + }; + + Disposable.prototype.off = function() { + Grim.deprecate("Use ::dispose to cancel subscriptions instead of ::off"); + return this.dispose(); + }; + + return Disposable; + + })(); + +}).call(this); diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js b/atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js new file mode 100644 index 0000000..1c8336a --- /dev/null +++ b/atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js @@ -0,0 +1,80 @@ +(function() { + var Disposable, Emitter; + + Disposable = require('./disposable'); + + module.exports = Emitter = (function() { + Emitter.prototype.isDisposed = false; + + + /* + Section: Construction and Destruction + */ + + function Emitter() { + this.handlersByEventName = {}; + } + + Emitter.prototype.dispose = function() { + this.handlersByEventName = null; + return this.isDisposed = true; + }; + + + /* + Section: Event Subscription + */ + + Emitter.prototype.on = function(eventName, handler) { + var currentHandlers; + if (this.isDisposed) { + throw new Error("Emitter has been disposed"); + } + if (typeof handler !== 'function') { + throw new Error("Handler must be a function"); + } + if (currentHandlers = this.handlersByEventName[eventName]) { + this.handlersByEventName[eventName] = currentHandlers.concat(handler); + } else { + this.handlersByEventName[eventName] = [handler]; + } + return new Disposable(this.off.bind(this, eventName, handler)); + }; + + Emitter.prototype.off = function(eventName, handlerToRemove) { + var handler, newHandlers, oldHandlers, _i, _len; + if (this.isDisposed) { + return; + } + if (oldHandlers = this.handlersByEventName[eventName]) { + newHandlers = []; + for (_i = 0, _len = oldHandlers.length; _i < _len; _i++) { + handler = oldHandlers[_i]; + if (handler !== handlerToRemove) { + newHandlers.push(handler); + } + } + return this.handlersByEventName[eventName] = newHandlers; + } + }; + + + /* + Section: Event Emission + */ + + Emitter.prototype.emit = function(eventName, value) { + var handler, handlers, _i, _len, _ref; + if (handlers = (_ref = this.handlersByEventName) != null ? _ref[eventName] : void 0) { + for (_i = 0, _len = handlers.length; _i < _len; _i++) { + handler = handlers[_i]; + handler(value); + } + } + }; + + return Emitter; + + })(); + +}).call(this); diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js b/atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js new file mode 100644 index 0000000..8250ea0 --- /dev/null +++ b/atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js @@ -0,0 +1,8 @@ +(function() { + exports.Emitter = require('./emitter'); + + exports.Disposable = require('./disposable'); + + exports.CompositeDisposable = require('./composite-disposable'); + +}).call(this); |