8000 Merge branch 'provide-key-to-merge' of https://github.com/tgriesser/i… · githubsheng/immutable-js@15b7ff6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 15b7ff6

Browse 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

File tree

6 files changed

+32
-23
lines changed

6 files changed

+32
-23
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
@@ -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

Lines 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

Lines 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

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

0 commit comments

Comments
 (0)
0