getNextNumber method
Parses the next number in the stream. Numbers with exponents are handled. NaN values are handled correctly, and the case of the "NaN" symbol is not significant.
@param tokenizer tokenizer over a stream of text in Well-known Text @return the next number in the stream @throws ParseException if the next token is not a valid number @throws IOException if an I/O error occurs
Implementation
double getNextNumber(WKTTokenizer tokenizer) {
WKTToken token = tokenizer.next()!;
switch (token.type) {
case WKTTokenType.KEYWORD:
{
if (StringUtils.equalsIgnoreCase(token.value, NAN_SYMBOL)) {
return double.nan;
} else {
try {
return double.parse(token.value);
} catch (ex) {
throw ArgumentError("Invalid number: ${token.value}");
}
}
break;
}
case WKTTokenType.NUMERIC_LITERAL:
{
try {
return double.parse(token.value);
} catch (ex) {
throw ArgumentError("Invalid number: ${token.value}");
}
}
}
throw ArgumentError(
"Expected number token but found ${token.type}: ${token.value}");
}