olorin
Version:
CoffeeScript Myo Bindings
74 lines (57 loc) • 5.21 kB
JavaScript
var Event, Events, Subscription, _;
_ = require('underscore');
Subscription = (function() {
function Subscription(callback, index, subscriptionList) {
this.callback = callback;
this.index = index;
this.subscriptionList = subscriptionList;
}
Subscription.prototype.invoke = function() {
return this.callback();
};
Subscription.prototype.dispose = function() {
return this.subscriptionList.splice(this.index, 0);
};
return Subscription;
})();
Events = (function() {
function Events() {
this.events = {};
}
Events.prototype.on = function(eventName, listener) {
var subscriptionList;
if (!this.events[eventName]) {
!(this.events[eventName] = []);
}
subscriptionList = this.events[eventName];
return subscriptionList.push(listener, subscriptionList.length, subscriptionList);
};
Events.prototype.trigger = function(eventName) {
var len, subscription, subscriptionList, _results;
subscriptionList = this.events[eventName] || [];
len = subscriptionList.length;
_results = [];
while (len--) {
subscription = subscriptionList[len];
_results.push(subscription.invoke());
}
return _results;
};
Events.prototype.off = function(eventName) {
return this.events[eventName] = [];
};
return Events;
})();
Event = (function() {
function Event(name, data) {
this.name = name;
this.data = data;
}
return Event;
})();
_.extend(exports, {
Event: Event,
Events: Events,
Subscription: Subscription
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV2ZW50cy5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSw4QkFBQTs7QUFBQSxDQUFBLEdBQUksT0FBQSxDQUFRLFlBQVIsQ0FBSixDQUFBOztBQUFBO0FBSWlCLEVBQUEsc0JBQUUsUUFBRixFQUFhLEtBQWIsRUFBcUIsZ0JBQXJCLEdBQUE7QUFBd0MsSUFBdkMsSUFBQyxDQUFBLFdBQUEsUUFBc0MsQ0FBQTtBQUFBLElBQTVCLElBQUMsQ0FBQSxRQUFBLEtBQTJCLENBQUE7QUFBQSxJQUFwQixJQUFDLENBQUEsbUJBQUEsZ0JBQW1CLENBQXhDO0VBQUEsQ0FBYjs7QUFBQSx5QkFFQSxNQUFBLEdBQVEsU0FBQSxHQUFBO1dBQ0osSUFBQyxDQUFBLFFBQUQsQ0FBQSxFQURJO0VBQUEsQ0FGUixDQUFBOztBQUFBLHlCQUtBLE9BQUEsR0FBUyxTQUFBLEdBQUE7V0FDTCxJQUFDLENBQUEsZ0JBQWdCLENBQUMsTUFBbEIsQ0FBeUIsSUFBQyxDQUFBLEtBQTFCLEVBQWlDLENBQWpDLEVBREs7RUFBQSxDQUxULENBQUE7O3NCQUFBOztJQUpKLENBQUE7O0FBQUE7QUFjaUIsRUFBQSxnQkFBQSxHQUFBO0FBQ1QsSUFBQSxJQUFDLENBQUEsTUFBRCxHQUFVLEVBQVYsQ0FEUztFQUFBLENBQWI7O0FBQUEsbUJBR0EsRUFBQSxHQUFJLFNBQUMsU0FBRCxFQUFZLFFBQVosR0FBQTtBQUNBLFFBQUEsZ0JBQUE7QUFBQSxJQUFBLElBQUcsQ0FBQSxJQUFFLENBQUEsTUFBTyxDQUFBLFNBQUEsQ0FBWjtBQUNJLE1BQUEsQ0FBQSxDQUFDLElBQUMsQ0FBQSxNQUFPLENBQUEsU0FBQSxDQUFSLEdBQXFCLEVBQXJCLENBQUQsQ0FESjtLQUFBO0FBQUEsSUFHQSxnQkFBQSxHQUFtQixJQUFDLENBQUEsTUFBTyxDQUFBLFNBQUEsQ0FIM0IsQ0FBQTtXQUlBLGdCQUFnQixDQUFDLElBQWpCLENBQXNCLFFBQXRCLEVBQWdDLGdCQUFnQixDQUFDLE1BQWpELEVBQXlELGdCQUF6RCxFQUxBO0VBQUEsQ0FISixDQUFBOztBQUFBLG1CQVVBLE9BQUEsR0FBUyxTQUFDLFNBQUQsR0FBQTtBQUNMLFFBQUEsNkNBQUE7QUFBQSxJQUFBLGdCQUFBLEdBQW1CLElBQUMsQ0FBQSxNQUFPLENBQUEsU0FBQSxDQUFSLElBQXNCLEVBQXpDLENBQUE7QUFBQSxJQUNBLEdBQUEsR0FBTSxnQkFBZ0IsQ0FBQyxNQUR2QixDQUFBO0FBR0E7V0FBTSxHQUFBLEVBQU4sR0FBQTtBQUNJLE1BQUEsWUFBQSxHQUFlLGdCQUFpQixDQUFBLEdBQUEsQ0FBaEMsQ0FBQTtBQUFBLG9CQUNBLFlBQVksQ0FBQyxNQUFiLENBQUEsRUFEQSxDQURKO0lBQUEsQ0FBQTtvQkFKSztFQUFBLENBVlQsQ0FBQTs7QUFBQSxtQkFrQkEsR0FBQSxHQUFLLFNBQUMsU0FBRCxHQUFBO1dBQ0QsSUFBQyxDQUFBLE1BQU8sQ0FBQSxTQUFBLENBQVIsR0FBcUIsR0FEcEI7RUFBQSxDQWxCTCxDQUFBOztnQkFBQTs7SUFkSixDQUFBOztBQUFBO0FBcUNpQixFQUFBLGVBQUUsSUFBRixFQUFTLElBQVQsR0FBQTtBQUFnQixJQUFmLElBQUMsQ0FBQSxPQUFBLElBQWMsQ0FBQTtBQUFBLElBQVIsSUFBQyxDQUFBLE9BQUEsSUFBTyxDQUFoQjtFQUFBLENBQWI7O2VBQUE7O0lBckNKLENBQUE7O0FBQUEsQ0F3Q0MsQ0FBQyxNQUFGLENBQVMsT0FBVCxFQUFrQjtBQUFBLEVBQ2QsS0FBQSxFQUFPLEtBRE87QUFBQSxFQUVkLE1BQUEsRUFBUSxNQUZNO0FBQUEsRUFHZCxZQUFBLEVBQWMsWUFIQTtDQUFsQixDQXhDQSxDQUFBIiwiZmlsZSI6ImV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbIl8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJylcblxuXG5jbGFzcyBTdWJzY3JpcHRpb25cbiAgICBjb25zdHJ1Y3RvcjogKEBjYWxsYmFjaywgQGluZGV4LCBAc3Vic2NyaXB0aW9uTGlzdCkgLT5cblxuICAgIGludm9rZTogKCkgLT5cbiAgICAgICAgQGNhbGxiYWNrKClcblxuICAgIGRpc3Bvc2U6ICgpIC0+XG4gICAgICAgIEBzdWJzY3JpcHRpb25MaXN0LnNwbGljZShAaW5kZXgsIDApXG5cblxuY2xhc3MgRXZlbnRzXG4gICAgY29uc3RydWN0b3I6ICgpIC0+XG4gICAgICAgIEBldmVudHMgPSB7fVxuXG4gICAgb246IChldmVudE5hbWUsIGxpc3RlbmVyKSAtPlxuICAgICAgICBpZiAhQGV2ZW50c1tldmVudE5hbWVdXG4gICAgICAgICAgICAhQGV2ZW50c1tldmVudE5hbWVdID0gW10gICMgbmV3IHN1YnNjcmlwdGlvbiBsaXN0IGZvciB0aGlzIG5ldyBldmVudFxuXG4gICAgICAgIHN1YnNjcmlwdGlvbkxpc3QgPSBAZXZlbnRzW2V2ZW50TmFtZV1cbiAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5wdXNoKGxpc3RlbmVyLCBzdWJzY3JpcHRpb25MaXN0Lmxlbmd0aCwgc3Vic2NyaXB0aW9uTGlzdClcblxuICAgIHRyaWdnZXI6IChldmVudE5hbWUpIC0+XG4gICAgICAgIHN1YnNjcmlwdGlvbkxpc3QgPSBAZXZlbnRzW2V2ZW50TmFtZV0gfHwgW11cbiAgICAgICAgbGVuID0gc3Vic2NyaXB0aW9uTGlzdC5sZW5ndGhcblxuICAgICAgICB3aGlsZSBsZW4tLVxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0gc3Vic2NyaXB0aW9uTGlzdFtsZW5dXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24uaW52b2tlKClcblxuICAgIG9mZjogKGV2ZW50TmFtZSkgLT5cbiAgICAgICAgQGV2ZW50c1tldmVudE5hbWVdID0gW11cblxuXG5jbGFzcyBFdmVudFxuICAgIGNvbnN0cnVjdG9yOiAoQG5hbWUsIEBkYXRhKSAtPlxuXG5cbl8uZXh0ZW5kKGV4cG9ydHMsIHtcbiAgICBFdmVudDogRXZlbnRcbiAgICBFdmVudHM6IEV2ZW50c1xuICAgIFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXG59KVxuIl19