diff --git a/event.js b/event.js index c5d91f6..782b962 100644 --- a/event.js +++ b/event.js @@ -2,6 +2,8 @@ * * * +* XXX should we have .pre/.post events??? +* **********************************************/ /* c8 ignore next 2 */ ((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define) (function(require){ var module={} // make module AMD/node compatible... @@ -134,22 +136,32 @@ var eventMethod = function(name, func, options={}){ var EventHandlerMixin = { - // XXX add option to force global??? + __event_handlers__: null, + on: function(evt, func){ // event... - if(evt in this){ - this[evt].__event_handler_add__ - && this[evt].__event_handler_add__(this, func) + if(evt in this + && this[evt].__event_handler_add__){ + this[evt].__event_handler_add__(this, func) // non-event... } else { ;((this.__event_handlers__ = this.__event_handlers__ || {})[evt] = this.__event_handlers__[evt] || []) .push(func) } return this }, - off: function(event, func){ - }, - trigger: function(event, ...args){ + off: function(evt, func){ + // event... + if(evt in this + && this[evt].__event_handler_add__){ + this[evt].__event_handler_remove__(this, func) + // non-event... + } else { + // XXX + } + return this }, + trigger: function(evt, ...args){ // XXX trigger both the context and the method event handlers... + // XXX }, } diff --git a/main.js b/main.js index 64579c5..a57dd3e 100644 --- a/main.js +++ b/main.js @@ -20,8 +20,9 @@ module.patchDate = require('./Date').patchDate // Additional types... module.containers = require('./containers') -module.runner = require('./runner') module.generator = require('./generator') +module.event = require('./event') +module.runner = require('./runner') diff --git a/runner.js b/runner.js index 2db9fac..5ae471e 100644 --- a/runner.js +++ b/runner.js @@ -24,6 +24,7 @@ var makeActionEvent = function(func){ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// XXX use ./event... var Queue = module.Queue = object.Constructor('Queue', Array, { // create a running queue...