event.js seems stable...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-11-15 05:13:35 +03:00
parent 7dc49d1bea
commit aadb1a7c07
5 changed files with 60 additions and 19 deletions

View File

@ -87,6 +87,18 @@ A library of JavaScript type extensions, types and type utilities.
- [`<unique-key-map>.uniqueKey(..)`](#unique-key-mapuniquekey)
- [`<unique-key-map>.__key_pattern__`](#unique-key-map__key_pattern__)
- [`<unique-key-map>.__unordered_rename__`](#unique-key-map__unordered_rename__)
- [Event](#event)
- [`event.Eventfull(..)`](#eventeventfull)
- [`event.Event(..)`](#eventevent)
- [`event.EventHandlerMixin`](#eventeventhandlermixin)
- [`<obj>.on(..)`](#objon)
- [`<obj>.one(..)`](#objone)
- [`<obj>.off(..)`](#objoff)
- [`<obj>.trigger(..)`](#objtrigger)
- [`event.EventDocMixin`](#eventeventdocmixin)
- [`<obj>.eventfull`](#objeventfull)
- [`<obj>.events`](#objevents)
- [`event.EventMixin`](#eventeventmixin)
- [Runner](#runner)
- [`runner.Queue(..)` / `runner.Queue.run(..)`](#runnerqueue--runnerqueuerun)
- [`<queue>.state`](#queuestate)
@ -771,6 +783,30 @@ otherwise [`.unorderedRename(..)`](#unique-key-mapunorderedrename) is called.
#### `<unique-key-map>.__unordered_rename__`
## Event
### `event.Eventfull(..)`
### `event.Event(..)`
### `event.EventHandlerMixin`
#### `<obj>.on(..)`
#### `<obj>.one(..)`
#### `<obj>.off(..)`
#### `<obj>.trigger(..)`
### `event.EventDocMixin`
#### `<obj>.eventfull`
#### `<obj>.events`
### `event.EventMixin`
## Runner
### `runner.Queue(..)` / `runner.Queue.run(..)`

View File

@ -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')

View File

@ -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": {

View File

@ -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))

17
test.js
View File

@ -463,17 +463,22 @@ Events.cases({
assert(call('bareEvent') == 'bareEvent', '<obj-w-events>.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...
},
})