parseNumber method

VlJson parseNumber()

Implementation

VlJson parseNumber() {
  int start = i;
  bool sawFraction = false;
  bool go = true;
  while (go) {
    if ( i >= n ) {
      go = false;
    } else {
      int c = s.codeUnitAt(i);
      if ( this.isNumChar(c) ) {
        if ( c == 46 ) {
          sawFraction = true;
        }
        if ( c == 101 ) {
          sawFraction = true;
        }
        if ( c == 69 ) {
          sawFraction = true;
        }
        i = i + 1;
      } else {
        go = false;
      }
    }
  }
  VlJson v =  VlJson();
  if ( i > start ) {
    String sub = s.substring(start, i );
    double? d = double.tryParse(sub);
    v.kind = 2;
    v.isInt = false == sawFraction;
    if ( d != null ) {
      v.num = d!;
    } else {
      this.fail("invalid number: " + sub);
    }
  } else {
    this.fail("expected value");
  }
  return v;
}