Index: packages/string_scanner/lib/src/eager_span_scanner.dart |
diff --git a/packages/string_scanner/lib/src/eager_span_scanner.dart b/packages/string_scanner/lib/src/eager_span_scanner.dart |
index 3fae5cca7cfdefa1017b8b6298d1680df1f8f34e..f80dce5c3f9a4bdf39e8e624aff00ae30b6ad9c8 100644 |
--- a/packages/string_scanner/lib/src/eager_span_scanner.dart |
+++ b/packages/string_scanner/lib/src/eager_span_scanner.dart |
@@ -2,8 +2,6 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library string_scanner.eager_span_scanner; |
- |
import 'package:charcode/ascii.dart'; |
import 'line_scanner.dart'; |
@@ -69,15 +67,26 @@ class EagerSpanScanner extends SpanScanner { |
EagerSpanScanner(String string, {sourceUrl, int position}) |
: super(string, sourceUrl: sourceUrl, position: position); |
+ bool scanChar(int character) { |
+ if (!super.scanChar(character)) return false; |
+ _adjustLineAndColumn(character); |
+ return true; |
+ } |
+ |
int readChar() { |
- var char = super.readChar(); |
- if (char == $lf || (char == $cr && peekChar() != $lf)) { |
+ var character = super.readChar(); |
+ _adjustLineAndColumn(character); |
+ return character; |
+ } |
+ |
+ /// Adjusts [_line] and [_column] after having consumed [character]. |
+ void _adjustLineAndColumn(int character) { |
+ if (character == $lf || (character == $cr && peekChar() != $lf)) { |
_line += 1; |
_column = 0; |
} else { |
_column += 1; |
} |
- return char; |
} |
bool scan(Pattern pattern) { |