Skip to content
This repository was archived by the owner on Oct 12, 2024. It is now read-only.

Commit 3d1b806

Browse files
committed
Update
1 parent e23d967 commit 3d1b806

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

lib/src/collections/src/merge.dart

+20-16
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,33 @@ import 'dart:collection' show Queue;
1414

1515
import 'package:collection/collection.dart' show mergeMaps;
1616

17+
import '/src/core/src/let.dart';
18+
import 'non_nulls_on_map_extension.dart';
1719

1820
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
1921

2022
/// Merges two Iterables into one. Supported Iterable types are List, Set, and
2123
/// Queue.
22-
T mergeListsSetsOrQueues<T extends Iterable>(T a, Iterable b) {
24+
Iterable mergeListsSetsOrQueues(Iterable a, Iterable b) {
25+
final a1 = a.nonNulls;
26+
final b1 = b.nonNulls;
2327
Iterable result;
24-
if (a is List) {
25-
result = List.of(a);
28+
if (a1 is List) {
29+
result = List.of(a1);
2630
var index = 0;
27-
for (var item in b) {
31+
for (var item in b1) {
2832
if (result.length <= index || result.elementAt(index) != item) {
2933
(result as dynamic).add(item);
3034
}
3135
index++;
3236
}
33-
} else if (a is Set) {
34-
result = Set.of(a);
35-
(result as dynamic).addAll(b);
36-
} else if (a is Queue) {
37-
result = Queue.of(a);
37+
} else if (a1 is Set) {
38+
result = Set.of(a1);
39+
(result as dynamic).addAll(b1);
40+
} else if (a1 is Queue) {
41+
result = Queue.of(a1);
3842
var index = 0;
39-
for (var item in b) {
43+
for (var item in b1) {
4044
if (result.length <= index || result.elementAt(index) != item) {
4145
(result as dynamic).add(item);
4246
}
@@ -46,13 +50,13 @@ T mergeListsSetsOrQueues<T extends Iterable>(T a, Iterable b) {
4650
throw ArgumentError('Unsupported Iterable type');
4751
}
4852

49-
return result as T;
53+
return result;
5054
}
5155

5256
/// Merges two iterables into one iterable.
5357
Iterable mergeIterables(dynamic a, dynamic b) {
54-
final aa = a is Iterable ? a : [a];
55-
final bb = b is Iterable ? b : [b];
58+
final aa = a is Iterable ? a.nonNulls : Iterable.generate(1, (_) => a);
59+
final bb = b is Iterable ? b.nonNulls : Iterable.generate(1, (_) => b);
5660
return aa.followedBy(bb);
5761
}
5862

@@ -68,10 +72,10 @@ dynamic mergeDataDeep(
6872
b,
6973
value: (a, b) {
7074
if (a is Map && b is Map) {
71-
return mergeDataDeep(a, b, elseFilter);
75+
return mergeDataDeep(a.nonNulls, b.nonNulls, elseFilter);
7276
}
7377
if (a is List || a is Set || a is Queue) {
74-
return mergeListsSetsOrQueues<Iterable>(a, b);
78+
return mergeListsSetsOrQueues(a, b);
7579
}
7680
if (a is Iterable) {
7781
return mergeIterables(a, b);
@@ -81,7 +85,7 @@ dynamic mergeDataDeep(
8185
);
8286
}
8387
if (a is List || a is Set || a is Queue) {
84-
return mergeListsSetsOrQueues<Iterable>(a, b);
88+
return mergeListsSetsOrQueues(a, b);
8589
}
8690
if (a is Iterable) {
8791
return mergeIterables(a, b);

0 commit comments

Comments
 (0)