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

Side by Side Diff: lib/parser.dart

Issue 2574593004: Rev package version as the extended source map format is a new feature. (Closed)
Patch Set: add small feature to parser.dart Created 4 years 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
« CHANGELOG.md ('K') | « CHANGELOG.md ('k') | pubspec.yaml » ('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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 /// Contains the top-level function to parse source maps version 3. 5 /// Contains the top-level function to parse source maps version 3.
6 library source_maps.parser; 6 library source_maps.parser;
7 7
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 10
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 buff.write(map.toString()); 198 buff.write(map.toString());
199 } 199 }
200 return buff.toString(); 200 return buff.toString();
201 } 201 }
202 202
203 SourceMapSpan spanFor(int line, int column, 203 SourceMapSpan spanFor(int line, int column,
204 {Map<String, SourceFile> files, String uri}) { 204 {Map<String, SourceFile> files, String uri}) {
205 if (uri == null) { 205 if (uri == null) {
206 throw new ArgumentError.notNull('uri'); 206 throw new ArgumentError.notNull('uri');
207 } 207 }
208 if (_mappings.containsKey(uri)) { 208
209 return _mappings[uri].spanFor(line, column, files: files, uri: uri); 209 // Fall back to looking up uri suffixes of decreasing length if the full
Siggi Cherem (dart-lang) 2016/12/14 15:46:10 Let's keep the first `if` from before (where you c
Jacob 2016/12/14 18:49:42 Changed the wording of the comment from fall back
210 } 210 // uri does not match a source map.
211 // Fall back to looking up the source map on just the basename. 211 var parts = path.split(uri);
Siggi Cherem (dart-lang) 2016/12/14 15:46:10 do we expect uri to contain any scheme? (do we nee
Jacob 2016/12/14 18:49:42 Good point. path.split doesn't handle package: the
212 var name = path.basename(uri.toString()); 212 for (var i = 0; i < parts.length; ++i) {
213 if (_mappings.containsKey(name)) { 213 var candidate = path.joinAll(parts.skip(i));
214 return _mappings[name].spanFor(line, column, files: files, uri: name); 214 if (_mappings.containsKey(candidate)) {
215 return _mappings[candidate]
216 .spanFor(line, column, files: files, uri: candidate);
217 }
215 } 218 }
216 219
217 // Note: when there is no source map for an uri, this behaves like an 220 // Note: when there is no source map for an uri, this behaves like an
218 // identity function, returning the requested location as the result. 221 // identity function, returning the requested location as the result.
219 222
220 // Create a mock offset for the output location. We compute it in terms 223 // Create a mock offset for the output location. We compute it in terms
221 // of the input line and column to minimize the chances that two different 224 // of the input line and column to minimize the chances that two different
222 // line and column locations are mapped to the same offset. 225 // line and column locations are mapped to the same offset.
223 var offset = line * 1000000 + column; 226 var offset = line * 1000000 + column;
224 var location = new SourceLocation(offset, 227 var location = new SourceLocation(offset,
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 static const _TokenKind EOF = const _TokenKind(isEof: true); 614 static const _TokenKind EOF = const _TokenKind(isEof: true);
612 static const _TokenKind VALUE = const _TokenKind(); 615 static const _TokenKind VALUE = const _TokenKind();
613 final bool isNewLine; 616 final bool isNewLine;
614 final bool isNewSegment; 617 final bool isNewSegment;
615 final bool isEof; 618 final bool isEof;
616 bool get isValue => !isNewLine && !isNewSegment && !isEof; 619 bool get isValue => !isNewLine && !isNewSegment && !isEof;
617 620
618 const _TokenKind( 621 const _TokenKind(
619 {this.isNewLine: false, this.isNewSegment: false, this.isEof: false}); 622 {this.isNewLine: false, this.isNewSegment: false, this.isEof: false});
620 } 623 }
OLDNEW
« CHANGELOG.md ('K') | « CHANGELOG.md ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698