renameDeeply function

dynamic renameDeeply(
  1. List keyPath,
  2. dynamic newKey,
  3. dynamic data, [
  4. int i = 0,
])

rename keyPath in data to newKey

Implementation

dynamic renameDeeply(List keyPath, dynamic newKey, dynamic data, [int i = 0]) {
  if (data is Map) {
    if (!data.containsKey(keyPath[i])) {
      return data;
    } else {
      if (keyPath.length == i + 1) {
        data[newKey] = data[keyPath[i]];
        data.remove(keyPath[i]);
        return data;
      }
    }
  } else {
    return data;
  }

  data[keyPath[i]] = renameDeeply(keyPath, newKey, data[keyPath[i]], ++i);

  return data;
}