mergeDataDeep function
dynamic
mergeDataDeep(
- dynamic a,
- dynamic b, [
- dynamic elseFilter(
- dynamic
Implementation
dynamic mergeDataDeep(
dynamic a,
dynamic b, [
dynamic Function(dynamic)? elseFilter,
]) {
if (a is Map && b is Map) {
final result = Map<dynamic, dynamic>.from(a);
for (final key in b.keys) {
if (result.containsKey(key)) {
result[key] = mergeDataDeep(result[key], b[key], elseFilter);
} else {
result[key] = mergeDataDeep(null, b[key], elseFilter);
}
}
return result;
}
if ((a is List || a is Set || a is Queue) && b is Iterable) {
return mergeListsSetsOrQueues(a as Iterable, b, elseFilter);
}
if (a is Iterable && b is Iterable) {
return mergeIterables(a, b);
}
if (elseFilter != null) {
return elseFilter(b);
} else {
return b;
}
}