arrakis
Version:
Helpfull development framework
46 lines (33 loc) • 863 B
JavaScript
module.exports = class EventEmitter{
constructor(){
this._events = {};
this._eventsCount = 0;
}
on(event, listener, caller=this){
if(this._events.newListener != null)
this.emit('newListener', event, listener);
this._events[event] = {
listener: listener,
caller: caller
}
this._eventsCount++;
}
append(event, listener, caller=this, target=this){
event = target.constructor.name+'_'+event;
this.on(event, listener, caller);
target[event] = () => {
this.emit(event);
};
}
emit(event){
var event, args;
event = this._events[event];
if(event == null)
throw new Error('No listener can be emitted with that name ['+event+'}');
args = [];
for(var key in arguments)
args.push(arguments);
args.shift();
return event.listener.apply(event.caller, args);
}
}