decodeNumber method

NumberValue decodeNumber (dynamic src)

Decode a number

Implementation

NumberValue decodeNumber(dynamic src) {
  GsonParsable p = src is GsonParsable ? src : src is String ? new GsonParsable(src) : throw ("The src is not a valid input to decode an Array from");
  if(!new RegExp(r"[0-9\.]").hasMatch(p.actual())) { throw p.error("Any number has to start with a number between 0 and 9"); }
  String number = "";
  while(new RegExp(r"[0-9\.]").hasMatch(p.actual())) { number += p.next(); }

  NumberValue ret;

  switch(p.actual()) {
    case "b": ret = new Byte  (num.parse(number)); if(!p.ended){ p.skip(); } break;
    case "s": ret = new Short (num.parse(number)); if(!p.ended){ p.skip(); } break;
    case "l": ret = new Long  (num.parse(number)); if(!p.ended){ p.skip(); } break;
    case "f": ret = new Float (num.parse(number)); if(!p.ended){ p.skip(); } break;
    case "d": ret = new Double(num.parse(number)); if(!p.ended){ p.skip(); } break;
    default:  ret = new Integer(num.parse(number)); break;
  }

  return ret;
}