encode static method

Map<String, dynamic> encode(
  1. String path,
  2. dynamic data
)

Implementation

static Map<String, dynamic> encode(String path, data) {
  final Map<String, dynamic> subTweaks = {};

  if (data is List<dynamic>) {
    final currentLinks = [];
    for (var i = 0; i < data.length; i++) {
      final seg = data[i];
      final now = DateTime.now();
      final epoch = now.microsecondsSinceEpoch;
      final lock = epoch.toRadixString(16);
      capture(seg) {
        if (seg is Map<String, dynamic>) {
          return seg..[Album.srcKey] = '$path/$lock';
        }
      }

      currentLinks.add('$link:/$path/$lock');
      subTweaks.addAll(encode('$path/$lock', capture(seg)));
    }
    return subTweaks..[path] = currentLinks;
  }

  if (data is Map<String, dynamic>) {
    final currentLinks = {};
    for (final seg in data.entries) {
      final key = seg.key;
      final val = seg.value;
      currentLinks[seg.key] = '$link:/$path/$key';
      subTweaks.addAll(encode('$path/$key', val));
    }
    return subTweaks..[path] = currentLinks;
  }

  return subTweaks..[path] = data;
}