Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 746a6e9

Browse filesBrowse files
committed
Add key as third argument to custom merger
1 parent 44d694d commit 746a6e9
Copy full SHA for 746a6e9

File tree

Expand file treeCollapse file tree

6 files changed

+33
-24
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+33
-24
lines changed

‎__tests__/merge.ts

Copy file name to clipboardExpand all lines: __tests__/merge.ts
+9Lines 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

Copy file name to clipboardExpand all lines: dist/immutable.d.ts
+8-8Lines 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

Copy file name to clipboardExpand all lines: dist/immutable.js
+3-3Lines 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)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.