platform/graphql_parser/lib/src/language/ast/number_value.dart
2019-08-07 22:28:20 -04:00

28 lines
710 B
Dart

import 'dart:math' as math;
import 'package:source_span/source_span.dart';
import '../token.dart';
import 'input_value.dart';
class NumberValueContext extends InputValueContext<num> {
final Token NUMBER;
NumberValueContext(this.NUMBER);
num get numberValue {
var text = NUMBER.text;
if (!text.contains('E') && !text.contains('e')) {
return num.parse(text);
} else {
var split = text.split(text.contains('E') ? 'E' : 'e');
var base = num.parse(split[0]);
var exp = num.parse(split[1]);
return base * math.pow(10, exp);
}
}
@override
FileSpan get span => NUMBER.span;
@override
num computeValue(Map<String, dynamic> variables) => numberValue;
}