length argument now defaults to
0 rather than
1 when no match data is available.
StringScanner.lastMatch and related methods are now reset when the scanner's position changes without producing a new match.
Note: While the changes in
1.0.0 are user-visible, they're unlikely to actually break any code in practice. Unless you know that your package is incompatible with 0.1.x, consider using 0.1.5 as your lower bound rather than 1.0.0. For example,
string_scanner: ">=0.1.5 <2.0.0".
new SpanScanner.within(), which scans within a existing
path, since we don't actually import it.
new SpanScanner.eager()for creating a
SpanScannerthat eagerly computes its current line and column numbers.
LineScanner's handling of carriage returns to match that of
StringScanner.substring, which returns a substring of the source string.
SourceLocations to be
FileLocations. They always were underneath, but callers may now rely on it.
SpanScanner.location, which returns the scanner's current
Span class to
sourceUrl parameter is now named to make it clear that it can be safely
new StringScannerException() takes different arguments in a different order to match
StringScannerException.string has been renamed to
StringScannerException.source to match the
StringScannerExceptioninherit from source_map's [
new StringScanner() now takes an optional
sourceUrl argument that provides the URL of the source file. This is used for error reporting.
StringScanner.peekChar() methods for doing character-by-character scanning.
Scanners now throw
StringScannerExceptions which provide more detailed access to information about the errors that were thrown and can provide terminal-colored messages.
LineScanner subclass of
StringScanner that automatically tracks line and column information of the text being scanned.
SpanScanner subclass of
LineScanner that exposes matched ranges as [source map]