UNPKG

arrakis

Version:

Helpfull development framework

46 lines (33 loc) 863 B
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); } }