Index: lib/src/eager_span_scanner.dart |
diff --git a/lib/src/eager_span_scanner.dart b/lib/src/eager_span_scanner.dart |
index c537b0cd6f5ef5a3c0ad77fa308de53df007a8c3..f80dce5c3f9a4bdf39e8e624aff00ae30b6ad9c8 100644 |
--- a/lib/src/eager_span_scanner.dart |
+++ b/lib/src/eager_span_scanner.dart |
@@ -67,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) { |