Index: lib/src/utils.dart |
diff --git a/lib/src/utils.dart b/lib/src/utils.dart |
index 526724128f9831a090650af448acdc7a557ac8ef..da2192764a1af63e56830205f26e5129dc3acd06 100644 |
--- a/lib/src/utils.dart |
+++ b/lib/src/utils.dart |
@@ -56,3 +56,20 @@ Trace getTrace(stack, bool formatStacks, bool filterStacks) { |
return frame.package != 'unittest' || frame.member != 'TestCase._runTest'; |
})).terse.foldFrames((frame) => frame.package == 'unittest' || frame.isCore); |
} |
+ |
+/// Flattens nested [Iterable]s inside an [Iterable] into a single [List] |
+/// containing only non-[Iterable] elements. |
+List flatten(Iterable nested) { |
+ var result = []; |
+ helper(iter) { |
+ for (var element in iter) { |
+ if (element is Iterable) { |
+ helper(element); |
+ } else { |
+ result.add(element); |
+ } |
+ } |
+ } |
+ helper(nested); |
+ return result; |
+} |