decodeNumber method
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;
}