recordValue function

dynamic recordValue(
  1. dynamic v
)

Implementation

dynamic recordValue(v) {
  if(v == null)      return null;
  if(v is Map)       return v.isNotEmpty ? v.map((k,v) => MapEntry('$k', recordValue(v))) : null;
  if(v is Iterable)  return v.isNotEmpty ? v.map((e) => recordValue(e)).toList() : null;
  if(v is String)    return v.isNotEmpty ? v : null;
  if(v is num)       return v;
  if(v is bool)      return v;
  if(v is Enum)      return v.name;
  if(v is ObjectId)  return v.hexString;
  if(v is DateTime)  return v.millisecondsSinceEpoch;
  try {
    return v.toJson();
  } catch(e) {
    return v.toString();
  }
}