convertToDotCase static method

Map<String, dynamic> convertToDotCase(
  1. String key,
  2. dynamic value
)

Implementation

static Map<String, dynamic> convertToDotCase(String key, dynamic value) {
  if (value == null) return {};

  try {
    final data = List.from(value);

    Map<String, dynamic> result = {};

    for (int i = 0; i < data.length; i++) {
      result.addAll(convertToDotCase('$key.$i', data[i]));
    }

    return result;
  } catch (e) {
    // Empty list
  }

  try {
    final data = Map<String, dynamic>.from(value);

    Map<String, dynamic> result = {};

    for (String k in data.keys) {
      result.addAll(convertToDotCase('$key.$k', data[k]));
    }

    return result;
  } catch (e) {
    // Empty map
  }

  if (value is String) {
    for (String ascii in asciiMap.keys) {
      value = value.replaceAll(ascii, asciiMap[ascii]);
    }
  }

  return {key: value};
}