diff --git a/Array.js b/Array.js index 5809cd3..5d868dc 100644 --- a/Array.js +++ b/Array.js @@ -212,9 +212,12 @@ object.Mixin('ArrayMixin', 'soft', { // done... : [] }, - // XXX add handler function support -- a-la generator.js' - iter: function*(lst=[]){ - yield* lst.iter() }, + // XXX not sure about the handler API here yet... + iter: function*(lst=[], handler=undefined){ + yield* lst.iter( + ...(handler ? + [handler] + : [])) }, }) diff --git a/Function.js b/Function.js new file mode 100644 index 0000000..4b36aea --- /dev/null +++ b/Function.js @@ -0,0 +1,18 @@ +/********************************************************************** +* +* +* +**********************************************/ /* c8 ignore next 2 */ +((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define) +(function(require){ var module={} // make module AMD/node compatible... +/*********************************************************************/ + + +var AsyncFunction = +module.AsyncFunction = + (async function(){}).constructor + + + +/********************************************************************** +* vim:set ts=4 sw=4 : */ return module }) diff --git a/README.md b/README.md index 09a6f49..4b39170 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Library of JavaScript type extensions, types and utilities. - [`Object.matchPartial(..)`](#objectmatchpartial) - [`.run(..)`](#objectrun) - [`Object.sort(..)`](#objectsort) + - [`Function`](#function) + - [`func.AsyncFunction`](#funcasyncfunction) - [`Array`](#array) - [`.first(..)` / `.last(..)`](#arrayfirst--arraylast) - [`.rol(..)`](#arrayrol) @@ -454,6 +456,30 @@ Object.keys(Object.sort(o, ['x', 'a', '100'])) This is similar to [`.sort(..)`](#mapsort) and [`.sort(..)`](#setsort). +## `Function` + +```javascript +var func = require('ig-types/Function') +``` + +### `func.AsyncFunction` + +The async function constructor. + +This enables us to test if an object is an instance of an async function. + +```javascript +var a = async function(){ + // ... +} + +a instanceof func.AsyncFunction // -> true +``` + +This is hidden by JavaScript by default. + + + ## `Array` ```javascript diff --git a/main.js b/main.js index af776f8..c30b6f1 100644 --- a/main.js +++ b/main.js @@ -22,6 +22,7 @@ module.patchDate = require('./Date').patchDate // Additional types... module.containers = require('./containers') +module.func = require('./Function') module.generator = require('./generator') module.event = require('./event') module.runner = require('./runner') @@ -31,7 +32,9 @@ module.runner = require('./runner') module.STOP = object.STOP // frequently used stuff... +module.AsyncFunction = module.func.AsyncFunction module.Generator = module.generator.Generator +module.AsyncGenerator = module.generator.AsyncGenerator // XXX doc... module.iter = module.generator.iter diff --git a/package.json b/package.json index 2cbe382..26cdae0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ig-types", - "version": "6.15.6", + "version": "6.15.7", "description": "Generic JavaScript types and type extensions...", "main": "main.js", "scripts": {