revised naming in event.js...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-11-15 03:12:33 +03:00
parent 5c518593b7
commit 0e75b826a2
4 changed files with 59 additions and 25 deletions

View File

@ -25,10 +25,10 @@ var object = require('ig-object')
// calling it will trigger the handlers either after the user func(..)
// return or when the user calles the passed handler(..) function.
//
// bareEventMethod(name[, options])
// Eventfull(name[, options])
// -> method
//
// bareEventMethod(name, func[, options])
// Eventfull(name, func[, options])
// -> method
//
//
@ -42,8 +42,8 @@ var object = require('ig-object')
//
// NOTE: calling handle(false) will exiplicitly disable calling the
// handlers for that call...
var bareEventMethod =
module.bareEventMethod =
var Eventfull =
module.Eventfull =
function(name, func, options={}){
var hidden
var method
@ -131,13 +131,13 @@ function(name, func, options={}){
}) }
// Extends bareEventMethod(..) adding ability to bind events via the
// Extends Eventfull(..) adding ability to bind events via the
// resulting method directly by passing it a function...
//
// eventMethod(name[, options])
// Event(name[, options])
// -> method
//
// eventMethod(name, func[, options])
// Event(name, func[, options])
// -> method
//
//
@ -157,8 +157,8 @@ function(name, func, options={}){
// func(handle, ...args)
//
//
var eventMethod =
module.eventMethod =
var Event =
module.Event =
function(name, func, options={}){
var method
options = typeof(func) != 'function' ?
@ -166,7 +166,7 @@ function(name, func, options={}){
: options
return Object.assign(
method = bareEventMethod(name,
method = Eventfull(name,
function(handle, ...args){
// add handler...
// XXX handle handler tags...
@ -182,7 +182,7 @@ function(name, func, options={}){
options),
{
__event__: 'full',
// NOTE: this is a copy of bareEventMethod's .toString() as we
// NOTE: this is a copy of Eventfull's .toString() as we
// still need to base the doc on the user's func...
toString: function(){
return func.toString()

View File

@ -1,6 +1,6 @@
{
"name": "ig-types",
"version": "3.6.2",
"version": "3.7.0",
"description": "Generic JavaScript types and type extensions...",
"main": "main.js",
"scripts": {

View File

@ -44,7 +44,7 @@ module.Queue = object.Constructor('Queue', Array, {
run: function(...tasks){
return this({ state: 'running' }, ...tasks) },
}, {
}, object.mixinFlat({
// config...
//
pool_size: 8,
@ -65,6 +65,7 @@ module.Queue = object.Constructor('Queue', Array, {
this.stop() } },
/* XXX LEGACY...
// event API...
//
// XXX mignt be good to make this a generic mixin...
@ -122,6 +123,7 @@ module.Queue = object.Constructor('Queue', Array, {
return func === handler
|| func.original_handler === handler }))
return this },
//*/
// events/actions - state transitions...
@ -131,6 +133,7 @@ module.Queue = object.Constructor('Queue', Array, {
// .trigger('start')
// .state = 'running'
// and similar for 'stop'...
/*/ XXX ASAP migrate to event.js...
start: makeActionEvent(function(handler){
// register handler...
if(typeof(handler) == 'function'){
@ -143,6 +146,7 @@ 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'){
@ -154,25 +158,52 @@ module.Queue = object.Constructor('Queue', Array, {
this.__state = 'stopped'
this.trigger('stop!')
return this }),
/*/
start: events.Event('start', function(handle){
// can't start while running...
if(this.state == 'running'){
handle(false)
return this }
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 }),
//*/
// events/actions - state transitions...
//
/*/ XXX ASAP migrate to event.js...
clear: makeActionEvent(function(handler){
if(typeof(handler) == 'function'){
return this.on('clear', handler) }
this.splice(0, this.length)
return this }),
/*/
clear: events.Event(function(handler){
this.splice(0, this.length) }),
//*/
// events...
//
/* XXX LEGACY...
taskStarting: makeEvent(function(func){
return this.on('taskStarting', ...arguments) }),
taskCompleted: makeEvent(function(func){
return this.on('taskCompleted', ...arguments) }),
queueEmpty: makeEvent(function(func){
return this.on('queueEmpty', ...arguments) }),
/*/
taskStarting: events.Event('taskStarting'),
taskCompleted: events.Event('taskCompleted'),
queueEmpty: events.Event('queueEmpty'),
//*/
// helpers...
//
@ -275,7 +306,7 @@ module.Queue = object.Constructor('Queue', Array, {
&& typeof(this[0].finally) != 'function'){
Object.assign(this, this.shift()) }
this._run() },
})
}, events.EventMixin))

25
test.js
View File

@ -381,24 +381,24 @@ Events.cases({
// blank events...
bareEventBlank: assert(
events.bareEventMethod('bareEventBlank'),
'.bareEventMethod(..): blank'),
events.Eventfull('bareEventBlank'),
'.Eventfull(..): blank'),
eventBlank: assert(
events.eventMethod('eventBlank'),
'.eventMethod(..): blank'),
events.Event('eventBlank'),
'.Event(..): blank'),
// normal events...
bareEvent: assert(events.bareEventMethod('bareEvent',
bareEvent: assert(events.Eventfull('bareEvent',
function(handle, ...args){
called['bareEvent-call'] = true
assert(handle(), '.bareEventMethod(..) -> handle(..)')
assert(handle(), '.Eventfull(..) -> handle(..)')
return 'bareEvent'
}), '.bareEventMethod(..)'),
event: assert(events.eventMethod('event',
}), '.Eventfull(..)'),
event: assert(events.Event('event',
function(handle, ...args){
called['event-call'] = true
assert(handle(), '.eventMethod(..) -> handle(..)')
}), '.eventMethod(..)'),
assert(handle(), '.Event(..) -> handle(..)')
}), '.Event(..)'),
}, events.EventMixin),
'object with event mixin created.')
@ -461,7 +461,10 @@ Events.cases({
assert(call('event') === obj, '<obj-w-events>.event(..) return value.')
assert(call('bareEvent') == 'bareEvent', '<obj-w-events>.bareEvent(..) return value.')
obj.event(1,2,3)
// XXX test passing args...
// XXX test .one(..) / .off(..)
// unbind...