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 15b7ff6

Browse filesBrowse files
committed
Merge branch 'provide-key-to-merge' of https://github.com/tgriesser/immutable-js into tgriesser-provide-key-to-merge
Conflicts: dist/immutable.min.js
2 parents 64eb617 + 746a6e9 commit 15b7ff6
Copy full SHA for 15b7ff6

File tree

Expand file treeCollapse file tree

6 files changed

+32
-23
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+32
-23
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
@@ -2445,10 +2445,10 @@
24452445
}
24462446

24472447
function deepMerger(merger) {
2448-
return function(existing, value)
2448+
return function(existing, value, key)
24492449
{return existing && existing.mergeDeepWith && isIterable(value) ?
24502450
existing.mergeDeepWith(merger, value) :
2451-
merger ? merger(existing, value) : value};
2451+
merger ? merger(existing, value, key) : value};
24522452
}
24532453

24542454
function mergeIntoCollectionWith(collection, merger, iters) {
@@ -2463,7 +2463,7 @@
24632463
var mergeIntoMap = merger ?
24642464
function(value, key) {
24652465
collection.update(key, NOT_SET, function(existing )
2466-
{return existing === NOT_SET ? value : merger(existing, value)}
2466+
{return existing === NOT_SET ? value : merger(existing, value, key)}
24672467
);
24682468
} :
24692469
function(value, key) {

‎dist/immutable.min.js

Copy file name to clipboardExpand all lines: dist/immutable.min.js
+1-1Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/Map.js

Copy file name to clipboardExpand all lines: src/Map.js
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -715,10 +715,10 @@ function mergeIntoMapWith(map, merger, iterables) {
715715
}
716716

717717
export function deepMerger(merger) {
718-
return (existing, value) =>
718+
return (existing, value, key) =>
719719
existing && existing.mergeDeepWith && isIterable(value) ?
720720
existing.mergeDeepWith(merger, value) :
721-
merger ? merger(existing, value) : value;
721+
merger ? merger(existing, value, key) : value;
722722
}
723723

724724
export function mergeIntoCollectionWith(collection, merger, iters) {
@@ -733,7 +733,7 @@ export function mergeIntoCollectionWith(collection, merger, iters) {
733733
var mergeIntoMap = merger ?
734734
(value, key) => {
735735
collection.update(key, NOT_SET, existing =>
736-
existing === NOT_SET ? value : merger(existing, value)
736+
existing === NOT_SET ? value : merger(existing, value, key)
737737
);
738738
} :
739739
(value, key) => {

‎type-definitions/Immutable.d.ts

Copy file name to clipboardExpand all lines: type-definitions/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

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.