NumberParser class

A one-time object for parsing a particular numeric string. One-time here means an instance can only parse one string. This is implemented by transforming from a locale-specific format to one that the system can parse, then calls the system parsing methods on it.

Constructors

NumberParser.new(NumberFormat format, String text)
Create a new _NumberParser on which we can call parse().

Properties

done bool
Should we stop parsing before hitting the end of the string.
getter/setter pair
format NumberFormat
The format for which we are parsing.
final
gotNegative bool
Did we see something that indicates this is, or at least might be, a negative number.
getter/setter pair
gotNegativeSuffix bool
Did we see the required negative suffix at the end. Should match gotNegative.
getter/setter pair
gotPositive bool
Did we see something that indicates this is, or at least might be, a positive number.
getter/setter pair
gotPositiveSuffix bool
Did we see the required positive suffix at the end. Should match gotPositive.
getter/setter pair
groupingIsNotASpaceOrElseItIsSpaceFollowedByADigit bool
Determine if a space is a valid character in the number. See handleSpace.
no setter
hashCode int
The hash code for this object.
no setterinherited
input IntlStream
What we use to iterate over the input text.
final
prefixesSkipped bool
Have we already skipped over any required prefixes.
getter/setter pair
replacements Map<String, Function>
The strings we might replace with functions that return the replacement values. They are functions because we might need to check something in the context. Note that the ordering is important here. For example, symbols.PERCENT might be " %", and we must handle that before we look at an individual space.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scale int
If the number is percent or permill, what do we divide by at the end.
getter/setter pair
symbols NumberSymbols
The symbols used by our format.
no setter
text String
The text we are parsing.
final
value num?
The result of parsing text according to format. Automatically populated in the constructor.
getter/setter pair

Methods

asDigit(String char) int?
Turn char into a number representing a digit, or null if it doesn't represent a digit in this locale.
checkPrefixes({bool skip = false}) → void
Check to see if the input begins with either the positive or negative prefixes. Set the gotPositive and gotNegative variables accordingly.
checkSuffixes() → void
If the rest of our input is either the positive or negative suffix, set gotPositiveSuffix or gotNegativeSuffix accordingly.
handleSpace() → void
Replace a space in the number with the normalized form. If space is not a significant character (normally grouping) then it's just invalid. If it is the grouping character, then it's only valid if it's followed by a digit. e.g. '$12 345.00'
invalidFormat() → void
invalidNumber() → void
The number is invalid, throw a FormatException.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
parse() num
Parse text and return the resulting number. Throws FormatException if we can't parse it.
parseNumber(IntlStream input) num
Parse the number portion of the input, i.e. not any prefixes or suffixes, and assuming NaN and Infinity are already handled.
processNonDigit() → void
We've encountered a character that's not a digit. Go through our replacement rules looking for how to handle it. If we see something that's not a digit and doesn't have a replacement, then we're done and the number is probably invalid.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited