readNumber method

String readNumber()

Implementation

String readNumber() {
  StringBuffer result = StringBuffer();
  bool hasExponent = false;

  while (canRead) {
    var ch = peek();

    if (isDigit(ch) || ch == '.') {
      result.write(next());
    } else if ((ch == '-' || ch == '+') && result.isEmpty) {
      // Leading sign at start
      result.write(next());
    } else if ((ch == 'e' || ch == 'E') && !hasExponent) {
      // Start of exponent
      hasExponent = true;
      result.write(next());
      // Allow optional sign right after exponent
      if (canRead && (peek() == '+' || peek() == '-')) {
        result.write(next());
      }
    } else {
      break;
    }
  }

  return result.toString();
}