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

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

Issue 1039603004: Fix FileSpan.context to include FileSpan.text. (Closed) Base URL: git@github.com:dart-lang/source_span.git@master
Patch Set: Created 5 years, 9 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
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 source_span.file; 5 library source_span.file;
6 6
7 import 'dart:math' as math; 7 import 'dart:math' as math;
8 import 'dart:typed_data'; 8 import 'dart:typed_data';
9 9
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 /// 198 ///
199 /// [end] is lazily generated from this to avoid allocating unnecessary 199 /// [end] is lazily generated from this to avoid allocating unnecessary
200 /// objects. 200 /// objects.
201 final int _end; 201 final int _end;
202 202
203 Uri get sourceUrl => file.url; 203 Uri get sourceUrl => file.url;
204 int get length => _end - _start; 204 int get length => _end - _start;
205 FileLocation get start => new FileLocation._(file, _start); 205 FileLocation get start => new FileLocation._(file, _start);
206 FileLocation get end => new FileLocation._(file, _end); 206 FileLocation get end => new FileLocation._(file, _end);
207 String get text => file.getText(_start, _end); 207 String get text => file.getText(_start, _end);
208 208 String get context => file.getText(file.getOffset(start.line),
209 String get context { 209 end.line == file.lines - 1 ? null : file.getOffset(end.line + 1));
210 var line = start.line;
211 return file.getText(file.getOffset(line),
212 line == file.lines - 1 ? null : file.getOffset(line + 1));
213 }
214 210
215 FileSpan._(this.file, this._start, this._end) { 211 FileSpan._(this.file, this._start, this._end) {
216 if (_end < _start) { 212 if (_end < _start) {
217 throw new ArgumentError('End $_end must come after start $_start.'); 213 throw new ArgumentError('End $_end must come after start $_start.');
218 } else if (_end > file.length) { 214 } else if (_end > file.length) {
219 throw new RangeError("End $_end must not be greater than the number " 215 throw new RangeError("End $_end must not be greater than the number "
220 "of characters in the file, ${file.length}."); 216 "of characters in the file, ${file.length}.");
221 } else if (_start < 0) { 217 } else if (_start < 0) {
222 throw new RangeError("Start may not be negative, was $_start."); 218 throw new RangeError("Start may not be negative, was $_start.");
223 } 219 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 if (sourceUrl != other.sourceUrl) { 258 if (sourceUrl != other.sourceUrl) {
263 throw new ArgumentError("Source URLs \"${sourceUrl}\" and " 259 throw new ArgumentError("Source URLs \"${sourceUrl}\" and "
264 " \"${other.sourceUrl}\" don't match."); 260 " \"${other.sourceUrl}\" don't match.");
265 } 261 }
266 262
267 var start = math.min(this._start, other._start); 263 var start = math.min(this._start, other._start);
268 var end = math.max(this._end, other._end); 264 var end = math.max(this._end, other._end);
269 return new FileSpan._(file, start, end); 265 return new FileSpan._(file, start, end);
270 } 266 }
271 } 267 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698