Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: lib/src/line_scanner.dart

Issue 1045533002: pkg/string_scanner: code format, expanded dependency constraint on unittest (Closed) Base URL: https://github.com/dart-lang/string_scanner.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « CHANGELOG.md ('k') | lib/src/string_scanner.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library string_scanner.line_scanner; 5 library string_scanner.line_scanner;
6 6
7 import 'string_scanner.dart'; 7 import 'string_scanner.dart';
8 8
9 /// A subclass of [StringScanner] that tracks line and column information. 9 /// A subclass of [StringScanner] that tracks line and column information.
10 class LineScanner extends StringScanner { 10 class LineScanner extends StringScanner {
(...skipping 22 matching lines...) Expand all
33 super.position = state.position; 33 super.position = state.position;
34 _line = state.line; 34 _line = state.line;
35 _column = state.column; 35 _column = state.column;
36 } 36 }
37 37
38 set position(int newPosition) { 38 set position(int newPosition) {
39 var oldPosition = position; 39 var oldPosition = position;
40 super.position = newPosition; 40 super.position = newPosition;
41 41
42 if (newPosition > oldPosition) { 42 if (newPosition > oldPosition) {
43 var newlines = "\n".allMatches(string.substring(oldPosition, newPosition)) 43 var newlines =
44 .toList(); 44 "\n".allMatches(string.substring(oldPosition, newPosition)).toList();
45 _line += newlines.length; 45 _line += newlines.length;
46 if (newlines.isEmpty) { 46 if (newlines.isEmpty) {
47 _column += newPosition - oldPosition; 47 _column += newPosition - oldPosition;
48 } else { 48 } else {
49 _column = newPosition - newlines.last.end; 49 _column = newPosition - newlines.last.end;
50 } 50 }
51 } else { 51 } else {
52 var newlines = "\n".allMatches(string.substring(newPosition, oldPosition)) 52 var newlines =
53 .toList(); 53 "\n".allMatches(string.substring(newPosition, oldPosition)).toList();
54 _line -= newlines.length; 54 _line -= newlines.length;
55 if (newlines.isEmpty) { 55 if (newlines.isEmpty) {
56 _column -= oldPosition - newPosition; 56 _column -= oldPosition - newPosition;
57 } else { 57 } else {
58 _column = newPosition - string.lastIndexOf("\n", newPosition) - 1; 58 _column = newPosition - string.lastIndexOf("\n", newPosition) - 1;
59 } 59 }
60 } 60 }
61 } 61 }
62 62
63 LineScanner(String string, {sourceUrl, int position}) 63 LineScanner(String string, {sourceUrl, int position})
64 : super(string, sourceUrl: sourceUrl, position: position); 64 : super(string, sourceUrl: sourceUrl, position: position);
65 65
66 int readChar() { 66 int readChar() {
67 var char = super.readChar(); 67 var char = super.readChar();
68 if (char == 0xA) { 68 if (char == 0xA) {
69 _line += 1; 69 _line += 1;
70 _column = 0; 70 _column = 0;
71 } else { 71 } else {
72 _column += 1; 72 _column += 1;
73 } 73 }
74 return char; 74 return char;
75 } 75 }
76 76
77 bool scan(Pattern pattern) { 77 bool scan(Pattern pattern) {
78 var oldPosition = position;
79 if (!super.scan(pattern)) return false; 78 if (!super.scan(pattern)) return false;
80 79
81 var newlines = "\n".allMatches(lastMatch[0]).toList(); 80 var newlines = "\n".allMatches(lastMatch[0]).toList();
82 _line += newlines.length; 81 _line += newlines.length;
83 if (newlines.isEmpty) { 82 if (newlines.isEmpty) {
84 _column += lastMatch[0].length; 83 _column += lastMatch[0].length;
85 } else { 84 } else {
86 _column = lastMatch[0].length - newlines.last.end; 85 _column = lastMatch[0].length - newlines.last.end;
87 } 86 }
88 87
(...skipping 10 matching lines...) Expand all
99 final int position; 98 final int position;
100 99
101 /// The zero-based line number of the scanner in this state. 100 /// The zero-based line number of the scanner in this state.
102 final int line; 101 final int line;
103 102
104 /// The zero-based column number of the scanner in this state. 103 /// The zero-based column number of the scanner in this state.
105 final int column; 104 final int column;
106 105
107 LineScannerState._(this._scanner, this.position, this.line, this.column); 106 LineScannerState._(this._scanner, this.position, this.line, this.column);
108 } 107 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | lib/src/string_scanner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698