receiveDigit method

  1. @override
DartBlockValueTreeAlgebraicNode receiveDigit(
  1. num digit
)
override

Receive a digit 0-9.

Implementation

@override
DartBlockValueTreeAlgebraicNode receiveDigit(num digit) {
  var valueString = value.toString();
  if (hasPendingDot && !valueString.contains(".")) {
    valueString += ".";
    hasPendingDot = false;
  }
  valueString += digit.toString();

  /// Parse a double
  if (valueString.contains(".")) {
    try {
      final newValue = double.parse(valueString);
      if (newValue.toString() == valueString) {
        value = newValue;
      }
      /// Overflow
      else {
        if (valueString.contains(".")) {
          hasPendingDot = true;
        }
      }
    } on FormatException catch (_) {
      ///
    }
  } else {
    try {
      value = int.parse(valueString);
    } on FormatException catch (_) {
      /// Overflow
    }
  }

  return this;
}