8000 Add key as third argument to custom merger · githubsheng/immutable-js@746a6e9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 746a6e9

Browse files
committed
Add key as third argument to custom merger
1 parent 44d694d commit 746a6e9

File tree

6 files changed

+33
-24
lines changed

6 files changed

+33
-24
lines changed

__tests__/merge.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ describe('merge', () => {
4040
expect(m1.mergeWith((a, b) => a + b, m2)).is(I.Map({a:1,b:22,c:3,d:10,e:30}));
4141
})
4242

43+
it('provides key as the third argument of merge function', () => {
44+
var m1 = I.Map({id:'temp', b:2, c:3});
45+
var m2 = I.Map({id:10, b:20, e:30});
46+
var add = (a, b) => a + b
47+
expect(
48+
m1.mergeWith((a, b, key) => key !== 'id' ? add(a, b) : b, m2)
49+
).is(I.Map({id:10,b:22,c:3,e:30}));
50+
})
51+
4352
it('deep merges two maps', () => {
4453
var m1 = I.fromJS({a:{b:{c:1,d:2}}});
4554
var m2 = I.fromJS({a:{b:{c:10,e:20},f:30},g:40});

dist/immutable.d.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,11 @@ declare module 'immutable' {
224224
* @see `Map#mergeWith`
225225
*/
226226
mergeWith(
227-
merger: (previous?: T, next?: T) => T,
227+
merger: (previous?: T, next?: T, key?: number) => T,
228228
...iterables: IndexedIterable<T>[]
229229
): List<T>;
230230
mergeWith(
231-
merger: (previous?: T, next?: T) => T,
231+
merger: (previous?: T, next?: T, key?: number) => T,
232232
...iterables: Array<T>[]
233233
): List<T>;
234234

@@ -242,11 +242,11 @@ declare module 'immutable' {
242242
* @see `Map#mergeDeepWith`
243243
*/
244244
mergeDeepWith(
245-
merger: (previous?: T, next?: T) => T,
245+
merger: (previous?: T, next?: T, key?: number) => T,
246246
...iterables: IndexedIterable<T>[]
247247
): List<T>;
248248
mergeDeepWith(
249-
merger: (previous?: T, next?: T) => T,
249+
merger: (previous?: T, next?: T, key?: number) => T,
250250
...iterables: Array<T>[]
251251
): List<T>;
252252

@@ -478,11 +478,11 @@ declare module 'immutable' {
478478
*
479479
*/
480480
mergeWith(
481-
merger: (previous?: V, next?: V) => V,
481+
merger: (previous?: V, next?: V, key?: K) => V,
482482
...iterables: Iterable<K, V>[]
483483
): Map<K, V>;
484484
mergeWith(
485-
merger: (previous?: V, next?: V) => V,
485+
merger: (previous?: V, next?: V, key?: K) => V,
486486
...iterables: {[key: string]: V}[]
487487
): Map<string, V>;
488488

@@ -509,11 +509,11 @@ declare module 'immutable' {
509509
*
510510
*/
511511
mergeDeepWith(
512-
merger: (previous?: V, next?: V) => V,
512+
merger: (previous?: V, next?: V, key?: K) => V,
513513
...iterables: Iterable<K, V>[]
514514
): Map<K, V>;
515515
mergeDeepWith(
516-
merger: (previous?: V, next?: V) => V,
516+
merger: (previous?: V, next?: V, key?: K) => V,
517517
...iterables: {[key: string]: V}[]
518518
): Map<string, V>;
519519

dist/immutable.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2411,10 +2411,10 @@
24112411
}
24122412

24132413
function deepMerger(merger) {
2414-
return function(existing, value)
2414+
return function(existing, value, key)
24152415
{return existing && existing.mergeDeepWith && isIterable(value) ?
24162416
existing.mergeDeepWith(merger, value) :
2417-
merger ? merger(existing, value) : value};
2417+
merger ? merger(existing, value, key) : value};
24182418
}
24192419

24202420
function mergeIntoCollectionWith(collection, merger, iters) {
@@ -2429,7 +2429,7 @@
24292429
var mergeIntoMap = merger ?
24302430
function(value, key) {
24312431
collection.update(key, NOT_SET, function(existing )
2432-
{return existing === NOT_SET ? value : merger(existing, value)}
2432+
{return existing === NOT_SET ? value : merger(existing, value, key)}
24332433
);
24342434
} :
24352435
function(value, key) {

0 commit comments

Comments
 (0)
0