read method

  1. @override
CellValue read(
  1. String v
)
override

Implementation

@override
CellValue read(String v) {
  // check if scientific notation e.g. 1E-3
  final eIdx = v.indexOf('E');
  final decimalSeparatorIdx = v.indexOf('.');

  if (decimalSeparatorIdx == -1 && eIdx == -1) {
    return IntCellValue(int.parse(v));
  }

  // also read .0 (or even .00) as an int
  bool noActualDecimalPlaces = true;
  for (var idx = decimalSeparatorIdx + 1; idx < v.length; ++idx) {
    if (v[idx] != '0') {
      noActualDecimalPlaces = false;
      break;
    }
  }
  if (noActualDecimalPlaces) {
    return IntCellValue(int.parse(v.substring(0, decimalSeparatorIdx)));
  }

  return DoubleCellValue(double.parse(v));
}