added .join(..) got generators and promise generators...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2022-07-27 14:11:01 +03:00
parent cc9824c9a9
commit 289978e274
4 changed files with 55 additions and 30 deletions

View File

@ -464,6 +464,11 @@ object.Constructor('IterablePromise', Promise, {
every: promiseProxy('every'),
join: async function(){
return [...(await this)]
.join(...arguments) },
// this is defined globally as Promise.prototype.iter(..)
//
// for details see: PromiseMixin(..) below...

View File

@ -232,7 +232,7 @@ object.Mixin('GeneratorMixin', 'soft', {
return that(...arguments).toArray() },
{ toString: function(){
return that.toString()
+ '\n .toString()'}, }) },
+ '\n .toArray()'}, }) },
gpop: makeGenerator('gpop'),
pop: function(){
var that = this
@ -242,7 +242,7 @@ object.Mixin('GeneratorMixin', 'soft', {
return that(...arguments).pop() },
{ toString: function(){
return that.toString()
+ '\n .gpop()'}, }) },
+ '\n .pop()'}, }) },
push: makeGenerator('push'),
gshift: makeGenerator('gshift'),
shift: function(){
@ -253,7 +253,7 @@ object.Mixin('GeneratorMixin', 'soft', {
return that(...arguments).shift() },
{ toString: function(){
return that.toString()
+ '\n .gshift()'}, }) },
+ '\n .shift()'}, }) },
unshift: makeGenerator('unshift'),
// promises...
@ -277,6 +277,18 @@ object.Mixin('GeneratorMixin', 'soft', {
//zip: makeGenerator('zip'),
enumerate: makeGenerator('enumerate'),
// XXX should this have a .gjoin(..) companion...
join: function(){
var args = [...arguments]
var that = this
return Object.assign(
function(){
//return that(...arguments).toArray().shift() },
return that(...arguments).join(...args) },
{ toString: function(){
return that.toString()
+ '\n .join()'}, }) },
})
@ -449,6 +461,10 @@ object.Mixin('GeneratorProtoMixin', 'soft', {
var i = 0
for(var e of this){
yield [i++, e] } },
join: function(){
return [...this]
.join(...arguments) },
})
@ -554,6 +570,10 @@ object.Mixin('AsyncGeneratorProtoMixin', 'soft', {
yield elem
yield* this },
join: async function(){
return [...(await this)]
.join(...arguments) },
// XXX
// slice -- not sure if we need this...
// ...

52
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "ig-types",
"version": "6.15.6",
"version": "6.15.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ig-types",
"version": "6.15.6",
"version": "6.15.7",
"license": "BSD-3-Clause",
"dependencies": {
"ig-object": "^6.0.0",
@ -35,9 +35,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
"integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
"engines": {
"node": ">=6.0.0"
@ -124,9 +124,9 @@
}
},
"node_modules/c8": {
"version": "7.11.3",
"resolved": "https://registry.npmjs.org/c8/-/c8-7.11.3.tgz",
"integrity": "sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA==",
"version": "7.12.0",
"resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
"integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
@ -351,9 +351,9 @@
}
},
"node_modules/ig-stoppable": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ig-stoppable/-/ig-stoppable-2.0.0.tgz",
"integrity": "sha512-UfIQZI6kAPUbroocVRrgtH7cTulg8kfUoHo7EMvhiEjtzWvHDlzTotCRSeDmMtT1WyKn/1o7o3dwc9D5DNcvNA=="
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ig-stoppable/-/ig-stoppable-2.0.1.tgz",
"integrity": "sha512-vos7eFNHryIg6yNzrWTV1QP1Sja5JkMU3nL2Y/YvSgU74l7w1Rx6yfVKoEHwNOex4MCkLsq6wMa91Ac6IWOtIA=="
},
"node_modules/ig-test": {
"version": "1.5.4",
@ -437,9 +437,9 @@
}
},
"node_modules/istanbul-reports": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
"integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
"integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@ -804,9 +804,9 @@
"dev": true
},
"@jridgewell/resolve-uri": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
"integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true
},
"@jridgewell/sourcemap-codec": {
@ -880,9 +880,9 @@
}
},
"c8": {
"version": "7.11.3",
"resolved": "https://registry.npmjs.org/c8/-/c8-7.11.3.tgz",
"integrity": "sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA==",
"version": "7.12.0",
"resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
"integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
@ -1073,9 +1073,9 @@
}
},
"ig-stoppable": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ig-stoppable/-/ig-stoppable-2.0.0.tgz",
"integrity": "sha512-UfIQZI6kAPUbroocVRrgtH7cTulg8kfUoHo7EMvhiEjtzWvHDlzTotCRSeDmMtT1WyKn/1o7o3dwc9D5DNcvNA=="
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ig-stoppable/-/ig-stoppable-2.0.1.tgz",
"integrity": "sha512-vos7eFNHryIg6yNzrWTV1QP1Sja5JkMU3nL2Y/YvSgU74l7w1Rx6yfVKoEHwNOex4MCkLsq6wMa91Ac6IWOtIA=="
},
"ig-test": {
"version": "1.5.4",
@ -1149,9 +1149,9 @@
}
},
"istanbul-reports": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
"integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
"integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
"html-escaper": "^2.0.0",

View File

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