diff --git a/README.md b/README.md index 7fb4a62..a1df54f 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,18 @@ A library of JavaScript type extensions, types and type utilities. - [`.uniqueKey(..)`](#unique-key-mapuniquekey) - [`.__key_pattern__`](#unique-key-map__key_pattern__) - [`.__unordered_rename__`](#unique-key-map__unordered_rename__) + - [Event](#event) + - [`event.Eventfull(..)`](#eventeventfull) + - [`event.Event(..)`](#eventevent) + - [`event.EventHandlerMixin`](#eventeventhandlermixin) + - [`.on(..)`](#objon) + - [`.one(..)`](#objone) + - [`.off(..)`](#objoff) + - [`.trigger(..)`](#objtrigger) + - [`event.EventDocMixin`](#eventeventdocmixin) + - [`.eventfull`](#objeventfull) + - [`.events`](#objevents) + - [`event.EventMixin`](#eventeventmixin) - [Runner](#runner) - [`runner.Queue(..)` / `runner.Queue.run(..)`](#runnerqueue--runnerqueuerun) - [`.state`](#queuestate) @@ -771,6 +783,30 @@ otherwise [`.unorderedRename(..)`](#unique-key-mapunorderedrename) is called. #### `.__unordered_rename__` +## Event + +### `event.Eventfull(..)` + +### `event.Event(..)` + +### `event.EventHandlerMixin` + +#### `.on(..)` + +#### `.one(..)` + +#### `.off(..)` + +#### `.trigger(..)` + +### `event.EventDocMixin` + +#### `.eventfull` + +#### `.events` + +### `event.EventMixin` + ## Runner ### `runner.Queue(..)` / `runner.Queue.run(..)` diff --git a/event.js b/event.js index 99432cb..ba904f9 100644 --- a/event.js +++ b/event.js @@ -215,10 +215,10 @@ module.EventHandlerMixin = { one: function(evt, func){ var handler this.on(evt, - handler = Object.assing( + handler = Object.assign( function(handle, ...args){ this.off(evt, handler) - return func.call(this, handle, ...args) }, + return func.call(this, handle, ...args) }.bind(this), {__event_original_handler__: func})) return this }, // XXX do we need .off(evt, 'all') diff --git a/package.json b/package.json index 33a866d..f6885be 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ig-types", - "version": "3.7.0", + "version": "3.7.1", "description": "Generic JavaScript types and type extensions...", "main": "main.js", "scripts": { diff --git a/runner.js b/runner.js index 556766e..28bd904 100644 --- a/runner.js +++ b/runner.js @@ -27,12 +27,14 @@ var events = require('./event') /*********************************************************************/ // helpers... +/* XXX LEGACY... var makeEvent = function(func, mode){ return Object.assign( func, {__event__: mode || true}) } var makeActionEvent = function(func){ return makeEvent(func, 'action') } +//*/ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -133,7 +135,7 @@ module.Queue = object.Constructor('Queue', Array, { // .trigger('start') // .state = 'running' // and similar for 'stop'... - /*/ XXX ASAP migrate to event.js... + /* XXX LEGACY... start: makeActionEvent(function(handler){ // register handler... if(typeof(handler) == 'function'){ @@ -146,7 +148,6 @@ module.Queue = object.Constructor('Queue', Array, { this.trigger('start!') this._run() return this }), - // XXX ASAP migrate to event.js... stop: makeActionEvent(function(handler){ // register handler... if(typeof(handler) == 'function'){ @@ -162,23 +163,20 @@ module.Queue = object.Constructor('Queue', Array, { start: events.Event('start', function(handle){ // can't start while running... if(this.state == 'running'){ - handle(false) - return this } + return handle(false) } this.__state = 'running' this._run() }), stop: events.Event('stop', function(handle){ // can't stop while not running... if(this.state == 'stopped'){ - handle(false) - return this } - this.__state = 'stopped' - return this }), + return handle(false) } + this.__state = 'stopped' }), //*/ // events/actions - state transitions... // - /*/ XXX ASAP migrate to event.js... + /* XXX LEGACY... clear: makeActionEvent(function(handler){ if(typeof(handler) == 'function'){ return this.on('clear', handler) } @@ -306,7 +304,9 @@ module.Queue = object.Constructor('Queue', Array, { && typeof(this[0].finally) != 'function'){ Object.assign(this, this.shift()) } this._run() }, -}, events.EventMixin)) +}, +// the event API mixin... +events.EventMixin)) diff --git a/test.js b/test.js index 54a48e2..a2c2450 100755 --- a/test.js +++ b/test.js @@ -463,17 +463,22 @@ Events.cases({ assert(call('bareEvent') == 'bareEvent', '.bareEvent(..) return value.') + // unbind: .one(..) / .off(..) + obj.one('event', function(){ + called['event-one-time-handler'] = + (called['event-one-time-handler'] || 0) + 1 }) + obj + .event() + .event() + .event() + assert(called['event-one-time-handler'] == 1, '.one("event", ..) handler cleared.') + // XXX test passing args... - // XXX test .one(..) / .off(..) - - // unbind... - - // trigger... + // XXX test different mode events... // re-bind... - // trigger... }, })