ig-types 6.9.1 → 6.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Date.js +3 -1
- package/Map.js +4 -0
- package/Promise.js +3 -0
- package/README.md +46 -0
- package/Set.js +4 -0
- package/generator.js +16 -0
- package/package.json +1 -1
package/Date.js
CHANGED
|
@@ -57,7 +57,7 @@ object.Mixin('DateMixin', 'soft', {
|
|
|
57
57
|
str = ' '+str
|
|
58
58
|
var c =
|
|
59
59
|
(/[^a-z](m(illi)?(-)?s(ec(ond(s)?)?)?)$/i.test(str)
|
|
60
|
-
|| /^[0-9]
|
|
60
|
+
|| /^([0-9]*\.)?[0-9]+$/.test(str) ) ?
|
|
61
61
|
1
|
|
62
62
|
: /[^a-z]s(ec(ond(s)?)?)?$/i.test(str) ?
|
|
63
63
|
1000
|
|
@@ -75,6 +75,8 @@ object.Mixin('DateMixin', 'soft', {
|
|
|
75
75
|
|
|
76
76
|
isPeriod: function(str){
|
|
77
77
|
return !isNaN(this.str2ms(str)) },
|
|
78
|
+
isDateStr: function(str){
|
|
79
|
+
return !isNaN(new Date(str).valueOf()) },
|
|
78
80
|
})
|
|
79
81
|
|
|
80
82
|
|
package/Map.js
CHANGED
|
@@ -16,6 +16,10 @@ var object = require('ig-object')
|
|
|
16
16
|
var MapProtoMixin =
|
|
17
17
|
module.MapProtoMixin =
|
|
18
18
|
object.Mixin('MapProtoMixin', 'soft', {
|
|
19
|
+
iter: function*(){
|
|
20
|
+
for(var e of this){
|
|
21
|
+
yield e } },
|
|
22
|
+
|
|
19
23
|
// NOTE: we do not touch .__keys here as no renaming is ever done...
|
|
20
24
|
//
|
|
21
25
|
// XXX this essentially rewrites the whole map, is there a faster/better
|
package/Promise.js
CHANGED
package/README.md
CHANGED
|
@@ -80,19 +80,23 @@ Library of JavaScript type extensions, types and utilities.
|
|
|
80
80
|
- [`generator.iter(..)`](#generatoriter)
|
|
81
81
|
- [`generator.STOP`](#generatorstop)
|
|
82
82
|
- [Generator instance iteration](#generator-instance-iteration)
|
|
83
|
+
- [`<generator>.iter()`](#generatoriter-1)
|
|
83
84
|
- [`<generator>.map(..)` / `<generator>.filter(..)`](#generatormap--generatorfilter)
|
|
84
85
|
- [`<generator>.reduce(..)` / `<generator>.greduce(..)`](#generatorreduce--generatorgreduce)
|
|
85
86
|
- [`<generator>.slice(..)`](#generatorslice)
|
|
86
87
|
- [`<generator>.at(..)` / `<generator>.gat(..)`](#generatorat--generatorgat)
|
|
87
88
|
- [`<generator>.flat(..)`](#generatorflat)
|
|
88
89
|
- [`<generator>.shift()` / `<generator>.pop()` / `<generator>.gshift()` / `<generator>.gpop()`](#generatorshift--generatorpop--generatorgshift--generatorgpop)
|
|
90
|
+
- [`<generator>.unshift(..)` / `<generator>.push(..)`](#generatorunshift--generatorpush)
|
|
89
91
|
- [`<generator>.promise()`](#generatorpromise)
|
|
90
92
|
- [`<generator>.then(..)` / `<generator>.catch(..)` / `<generator>.finally(..)`](#generatorthen--generatorcatch--generatorfinally)
|
|
91
93
|
- [`<generator>.toArray()`](#generatortoarray)
|
|
92
94
|
- [Treating iterators the same as generators](#treating-iterators-the-same-as-generators)
|
|
93
95
|
- [Generator constructor iteration](#generator-constructor-iteration)
|
|
96
|
+
- [`<Generator>.iter(..)`](#generatoriter-2)
|
|
94
97
|
- [`<Generator>.at(..)` / `<Generator>.gat(..)`](#generatorat--generatorgat-1)
|
|
95
98
|
- [`<Generator>.shift()` / `<Generator>.pop()` / `<Generator>.gshift()` / `<Generator>.gpop()`](#generatorshift--generatorpop--generatorgshift--generatorgpop-1)
|
|
99
|
+
- [`<generator>.unshift(..)` / `<generator>.push(..)`](#generatorunshift--generatorpush-1)
|
|
96
100
|
- [`<Generator>.slice(..)`](#generatorslice-1)
|
|
97
101
|
- [`<Generator>.map(..)` / `<Generator>.filter(..)` / `<Generator>.reduce(..)` / `<Generator>.flat()`](#generatormap--generatorfilter--generatorreduce--generatorflat)
|
|
98
102
|
- [`<Generator>.toArray()`](#generatortoarray-1)
|
|
@@ -1739,6 +1743,17 @@ Chained generators handle items depth-first, i.e. the items are passed as they
|
|
|
1739
1743
|
are yielded down the generator chain.
|
|
1740
1744
|
|
|
1741
1745
|
|
|
1746
|
+
#### `<generator>.iter()`
|
|
1747
|
+
|
|
1748
|
+
Iterate over the generator.
|
|
1749
|
+
```bnf
|
|
1750
|
+
<generator>.iter()
|
|
1751
|
+
-> <generator>
|
|
1752
|
+
```
|
|
1753
|
+
|
|
1754
|
+
This is here mainly for compatibility with [`<array>`'s `.iter()`](#arrayiter--arrayiter).
|
|
1755
|
+
|
|
1756
|
+
|
|
1742
1757
|
#### `<generator>.map(..)` / `<generator>.filter(..)`
|
|
1743
1758
|
|
|
1744
1759
|
Equivalents to `Array`'s `.map(..)`, `.filter(..)` and `.reduce(..)` but return
|
|
@@ -1848,6 +1863,18 @@ Note that `.shift()`/`.gshift()` will yield the item the generator is at at
|
|
|
1848
1863
|
time of call, this may not be the _first_ item if the generator is partially
|
|
1849
1864
|
depleted.
|
|
1850
1865
|
|
|
1866
|
+
#### `<generator>.unshift(..)` / `<generator>.push(..)`
|
|
1867
|
+
|
|
1868
|
+
Add a value to the generator sequence at start/end.
|
|
1869
|
+
```bnf
|
|
1870
|
+
<generator>.unshift(<value>)
|
|
1871
|
+
<generator>.push(<value>)
|
|
1872
|
+
-> <generator>
|
|
1873
|
+
```
|
|
1874
|
+
|
|
1875
|
+
Value added by `.unshift(..)` will be yielded by `<generator>` "first", i.e. on
|
|
1876
|
+
_next_ call to `.next()`, regardless of the current generator state.
|
|
1877
|
+
|
|
1851
1878
|
|
|
1852
1879
|
#### `<generator>.promise()`
|
|
1853
1880
|
|
|
@@ -1969,6 +1996,13 @@ XXX list the differences...
|
|
|
1969
1996
|
-->
|
|
1970
1997
|
|
|
1971
1998
|
|
|
1999
|
+
#### `<Generator>.iter(..)`
|
|
2000
|
+
|
|
2001
|
+
This is a shorthand to [`iter(..)`](#generatoriter).
|
|
2002
|
+
|
|
2003
|
+
This is here mainly for compatibility with
|
|
2004
|
+
[`Array`'s `.iter(..)`](#arrayiter--arrayiter).
|
|
2005
|
+
|
|
1972
2006
|
#### `<Generator>.at(..)` / `<Generator>.gat(..)`
|
|
1973
2007
|
|
|
1974
2008
|
```bnf
|
|
@@ -2002,6 +2036,18 @@ Equivalents to [`<generator>`'s `.shift(..)`/`.pop(..)`/..](#generatorshift--gen
|
|
|
2002
2036
|
but returning a reusable `<func>`/`<Generator>`.
|
|
2003
2037
|
|
|
2004
2038
|
|
|
2039
|
+
#### `<generator>.unshift(..)` / `<generator>.push(..)`
|
|
2040
|
+
|
|
2041
|
+
```bnf
|
|
2042
|
+
<Generator>.unshift(<value>)
|
|
2043
|
+
<Generator>.push(<value>)
|
|
2044
|
+
-> <Generator>
|
|
2045
|
+
```
|
|
2046
|
+
|
|
2047
|
+
Equivalents to [`<generator>`'s `.unshift(..)`/`.push(..)`](#generatorunshift--generatorpush)
|
|
2048
|
+
but returning a reusable `<Generator>`.
|
|
2049
|
+
|
|
2050
|
+
|
|
2005
2051
|
#### `<Generator>.slice(..)`
|
|
2006
2052
|
|
|
2007
2053
|
```bnf
|
package/Set.js
CHANGED
|
@@ -16,6 +16,10 @@ var object = require('ig-object')
|
|
|
16
16
|
var SetProtoMixin =
|
|
17
17
|
module.SetProtoMixin =
|
|
18
18
|
object.Mixin('SetMixin', 'soft', {
|
|
19
|
+
iter: function*(){
|
|
20
|
+
for(var e of this){
|
|
21
|
+
yield e } },
|
|
22
|
+
|
|
19
23
|
// Set set operation shorthands...
|
|
20
24
|
unite: function(other=[]){
|
|
21
25
|
return new Set([...this, ...other]) },
|
package/generator.js
CHANGED
|
@@ -190,6 +190,10 @@ module.GeneratorMixin =
|
|
|
190
190
|
object.Mixin('GeneratorMixin', 'soft', {
|
|
191
191
|
STOP: object.STOP,
|
|
192
192
|
|
|
193
|
+
// NOTE: this is here for compatibility with Array.iter(..)
|
|
194
|
+
iter: function*(lst=[]){
|
|
195
|
+
yield* module.iter(lst) },
|
|
196
|
+
|
|
193
197
|
gat: makeGenerator('gat'),
|
|
194
198
|
at: function(i){
|
|
195
199
|
var that = this
|
|
@@ -227,6 +231,7 @@ object.Mixin('GeneratorMixin', 'soft', {
|
|
|
227
231
|
{ toString: function(){
|
|
228
232
|
return that.toString()
|
|
229
233
|
+ '\n .gpop()'}, }) },
|
|
234
|
+
push: makeGenerator('push'),
|
|
230
235
|
gshift: makeGenerator('gshift'),
|
|
231
236
|
shift: function(){
|
|
232
237
|
var that = this
|
|
@@ -237,6 +242,7 @@ object.Mixin('GeneratorMixin', 'soft', {
|
|
|
237
242
|
{ toString: function(){
|
|
238
243
|
return that.toString()
|
|
239
244
|
+ '\n .gshift()'}, }) },
|
|
245
|
+
unshift: makeGenerator('unshift'),
|
|
240
246
|
|
|
241
247
|
// promises...
|
|
242
248
|
//
|
|
@@ -263,6 +269,10 @@ object.Mixin('GeneratorMixin', 'soft', {
|
|
|
263
269
|
var GeneratorProtoMixin =
|
|
264
270
|
module.GeneratorProtoMixin =
|
|
265
271
|
object.Mixin('GeneratorProtoMixin', 'soft', {
|
|
272
|
+
// NOTE: this is here for compatibility with [..].iter()
|
|
273
|
+
iter: function*(){
|
|
274
|
+
yield* this },
|
|
275
|
+
|
|
266
276
|
at: function(i){
|
|
267
277
|
return this.gat(i).next().value },
|
|
268
278
|
// XXX this needs the value to be iterable... why???
|
|
@@ -352,11 +362,17 @@ object.Mixin('GeneratorProtoMixin', 'soft', {
|
|
|
352
362
|
// XXX this needs the value to be iterable...
|
|
353
363
|
gpop: function*(){
|
|
354
364
|
yield [...this].pop() },
|
|
365
|
+
push: function*(value){
|
|
366
|
+
yield* this
|
|
367
|
+
yield value },
|
|
355
368
|
shift: function(){
|
|
356
369
|
return this.next().value },
|
|
357
370
|
// XXX this needs the value to be iterable...
|
|
358
371
|
gshift: function*(){
|
|
359
372
|
yield this.next().value },
|
|
373
|
+
unshift: function*(value){
|
|
374
|
+
yield value
|
|
375
|
+
yield* this },
|
|
360
376
|
|
|
361
377
|
// non-generators...
|
|
362
378
|
//
|