ig-types 6.18.0 → 6.19.0

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.
Files changed (3) hide show
  1. package/README.md +7 -0
  2. package/Set.js +24 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -49,6 +49,7 @@ Library of JavaScript type extensions, types and utilities.
49
49
  - [`<set>.replace(..)`](#setreplace)
50
50
  - [`<set>.replaceAt(..)`](#setreplaceat)
51
51
  - [`<set>.sort(..)`](#setsort)
52
+ - [`<set>.filter(..)` / `<set>.map(..)` / `<set>.forEach(..)` / `<set>.reduce(..)` / `<set>.reduceRight(..)`](#setfilter--setmap--setforeach--setreduce--setreduceright)
52
53
  - [`Date`](#date)
53
54
  - [`Date.timeStamp(..)`](#datetimestamp)
54
55
  - [`Date.fromTimeStamp(..)`](#datefromtimestamp)
@@ -1094,6 +1095,12 @@ This is similar to [`<map>.sort(..)`](#mapsort) and [`Object.sort(..)`](#objects
1094
1095
  see the later for more info.
1095
1096
 
1096
1097
 
1098
+ ### `<set>.filter(..)` / `<set>.map(..)` / `<set>.forEach(..)` / `<set>.reduce(..)` / `<set>.reduceRight(..)`
1099
+
1100
+ For more info see corresponding stoppable methods in
1101
+ [`Array`'s section](#arraysmap--arraysfilter--arraysreduce--arraysforeach).
1102
+
1103
+
1097
1104
 
1098
1105
  ## `Date`
1099
1106
 
package/Set.js CHANGED
@@ -8,11 +8,29 @@
8
8
  /*********************************************************************/
9
9
 
10
10
  var object = require('ig-object')
11
+ var stoppable = require('ig-stoppable')
11
12
 
12
13
 
13
14
 
14
15
  /*********************************************************************/
15
16
 
17
+ // Wrap .map(..) / .filter(..) / .reduce(..) / .. to support STOP...
18
+ //
19
+ // NOTE: internally these are implemented as for-of loops (./generator.js)
20
+ var stoppableSet = function(iter){
21
+ return function(func){
22
+ return new Set([...this][iter](...arguments)) } }
23
+ var stoppableValue = function(iter, no_return=false){
24
+ return function(func){
25
+ var res = [...this][iter](...arguments)
26
+ return no_return ?
27
+ undefined
28
+ : res } }
29
+
30
+
31
+
32
+ //---------------------------------------------------------------------
33
+
16
34
  var SetProtoMixin =
17
35
  module.SetProtoMixin =
18
36
  object.Mixin('SetMixin', 'soft', {
@@ -110,6 +128,12 @@ object.Mixin('SetMixin', 'soft', {
110
128
  this.sort(order)
111
129
 
112
130
  return removed },
131
+
132
+ filter: stoppableSet('filter'),
133
+ map: stoppableSet('map'),
134
+ reduce: stoppableValue('reduce'),
135
+ reduceRight: stoppableValue('reduceRight'),
136
+ forEach: stoppableValue('map', true),
113
137
  })
114
138
 
115
139
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ig-types",
3
- "version": "6.18.0",
3
+ "version": "6.19.0",
4
4
  "description": "Generic JavaScript types and type extensions...",
5
5
  "main": "main.js",
6
6
  "scripts": {