discoverDataPaths function

List<String> discoverDataPaths(
  1. Map<String, dynamic> data
)

Discovers scalar and array paths available in data.

Implementation

List<String> discoverDataPaths(Map<String, dynamic> data) {
  final paths = <String>[];

  void visit(dynamic value, String path) {
    if (value is Map) {
      for (final entry in value.entries) {
        final child = path.isEmpty
            ? entry.key.toString()
            : '$path.${entry.key}';
        visit(entry.value, child);
      }
      return;
    }
    if (value is List) {
      if (path.isNotEmpty) paths.add(path);
      if (value.isNotEmpty && value.first is Map) {
        visit(value.first, '$path[]');
      }
      return;
    }
    if (path.isNotEmpty) paths.add(path);
  }

  visit(data, '');
  return paths;
}