parseValue method

dynamic parseValue(
  1. dynamic rawValue
)

Parses a raw input value into the column's target data type.

Implementation

dynamic parseValue(dynamic rawValue) {
  if (rawValue == null) {
    return defaultValue;
  }

  if (type == TCsvColumnType.text) {
    final str = rawValue.toString().trim();
    return str.isEmpty ? defaultValue : str;
  }

  if (type == TCsvColumnType.number) {
    if (rawValue is num) return rawValue.toDouble();
    final str = rawValue.toString().trim().replaceAll('\$', '').replaceAll(',', '');
    if (str.isEmpty) return defaultValue;
    final parsed = double.tryParse(str);
    return parsed ?? defaultValue;
  }

  if (type == TCsvColumnType.integer) {
    if (rawValue is int) return rawValue;
    if (rawValue is num) return rawValue.toInt();
    final str = rawValue.toString().trim().replaceAll('\$', '').replaceAll(',', '');
    if (str.isEmpty) return defaultValue;
    final parsed = int.tryParse(str) ?? double.tryParse(str)?.toInt();
    return parsed ?? defaultValue;
  }

  if (type == TCsvColumnType.boolean) {
    if (rawValue is bool) return rawValue;
    final str = rawValue.toString().trim().toLowerCase();
    if (str.isEmpty) return defaultValue ?? false;
    if (str == 'true' || str == '1' || str == 'yes' || str == 'y' || str == 't' || str == 'active' || str == 'enabled') {
      return true;
    }
    if (str == 'false' || str == '0' || str == 'no' || str == 'n' || str == 'f' || str == 'inactive' || str == 'disabled') {
      return false;
    }
    return defaultValue ?? false;
  }

  return rawValue;
}