extractAllEntries<K, V> static method

List<MapEntry<K, V>> extractAllEntries<K, V>(
  1. Map<K, V> map, {
  2. MapEntry<K, V> entryCaster(
    1. MapEntry e
    )?,
  3. bool bfs = false,
})

Extract in depth all the entries of map.

Implementation

static List<MapEntry<K, V>> extractAllEntries<K, V>(Map<K, V> map,
    {MapEntry<K, V> Function(MapEntry e)? entryCaster, bool bfs = false}) {
  entryCaster ??= K == String
      ? (e) => MapEntry<K, V>(e.key.toString() as K, e.value)
      : (e) => MapEntry<K, V>(e.key, e.value);

  var all = <MapEntry<K, V>>[];

  var graphWalker = GraphWalker<MapEntry<K, V>>(bfs: bfs);

  graphWalker.walk(map.entries,
      nodeProvider: (s, v) => Node(v),
      outputsProvider: (s, e) {
        var val = e.value;
        return val is Map ? val.entries.map(entryCaster!) : null;
      },
      process: (s) {
        all.add(s.nodeValue);
        return null;
      });

  return all;
}