recursiveIterableToString static method

List<String> recursiveIterableToString(
  1. Set<Object>? processedObjects,
  2. Iterable o,
  3. String? toStr(
    1. Set<Object> processedObjects,
    2. Object? o
    )
)

Implementation

static List<String> recursiveIterableToString(
  Set<Object>? processedObjects,
  Iterable o,
  String? Function(Set<Object> processedObjects, Object? o) toStr,
) {
  processedObjects ??= _processedObjectsStack.lastOrNull;

  processedObjects = RecursiveToString.processedObjects(processedObjects, o);
  if (processedObjects == null) {
    return [
      '${o.map((e) => e is RecursiveToString ? e.toStringSimple() : e.runtimeType).toList()}...'
    ];
  }

  _processedObjectsStack.addLast(processedObjects);

  try {
    var l = o.map((e) => toStr(processedObjects!, e)).whereNotNull().toList();
    return l;
  } finally {
    var rm = _processedObjectsStack.removeLast();
    assert(identical(rm, processedObjects));
  }
}