Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 library inputstream; | 1 library inputstream; |
| 2 | 2 |
| 3 import 'dart:collection'; | 3 import 'dart:collection'; |
| 4 import 'package:utf/utf.dart'; | 4 import 'package:utf/utf.dart'; |
| 5 import 'package:source_maps/span.dart' show SourceFile; | 5 import 'package:source_span/source_span.dart'; |
| 6 import 'char_encodings.dart'; | 6 import 'char_encodings.dart'; |
| 7 import 'constants.dart'; | 7 import 'constants.dart'; |
| 8 import 'utils.dart'; | 8 import 'utils.dart'; |
| 9 import 'encoding_parser.dart'; | 9 import 'encoding_parser.dart'; |
| 10 | 10 |
| 11 /// Hooks to call into dart:io without directly referencing it. | 11 /// Hooks to call into dart:io without directly referencing it. |
| 12 class ConsoleSupport { | 12 class ConsoleSupport { |
| 13 List<int> bytesFromFile(source) => null; | 13 List<int> bytesFromFile(source) => null; |
| 14 } | 14 } |
| 15 | 15 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 128 c = NEWLINE; | 128 c = NEWLINE; |
| 129 } | 129 } |
| 130 | 130 |
| 131 _chars.add(c); | 131 _chars.add(c); |
| 132 if (c == NEWLINE) _lineStarts.add(_chars.length); | 132 if (c == NEWLINE) _lineStarts.add(_chars.length); |
| 133 } | 133 } |
| 134 | 134 |
| 135 // Free decoded characters if they aren't needed anymore. | 135 // Free decoded characters if they aren't needed anymore. |
| 136 if (_rawBytes != null) _rawChars = null; | 136 if (_rawBytes != null) _rawChars = null; |
| 137 | 137 |
| 138 fileInfo = new SourceFile(sourceUrl, _lineStarts, | 138 fileInfo = new SourceFile.decoded(_chars, url: sourceUrl); |
|
Siggi Cherem (dart-lang)
2014/07/29 20:56:32
could we do this maybe only when generateSpans is
nweiz
2014/07/29 21:13:17
Done.
nweiz
2014/07/30 00:25:53
It turns out this made a test fail, so I changed i
| |
| 139 generateSpans ? _chars : null); | |
| 140 } | 139 } |
| 141 | 140 |
| 142 | 141 |
| 143 void detectEncoding([bool parseMeta = true]) { | 142 void detectEncoding([bool parseMeta = true]) { |
| 144 // First look for a BOM | 143 // First look for a BOM |
| 145 // This will also read past the BOM if present | 144 // This will also read past the BOM if present |
| 146 charEncodingName = detectBOM(); | 145 charEncodingName = detectBOM(); |
| 147 charEncodingCertain = true; | 146 charEncodingCertain = true; |
| 148 | 147 |
| 149 // If there is no BOM need to look for meta elements with encoding | 148 // If there is no BOM need to look for meta elements with encoding |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 285 /// Return the python codec name corresponding to an encoding or null if the | 284 /// Return the python codec name corresponding to an encoding or null if the |
| 286 /// string doesn't correspond to a valid encoding. | 285 /// string doesn't correspond to a valid encoding. |
| 287 String codecName(String encoding) { | 286 String codecName(String encoding) { |
| 288 final asciiPunctuation = new RegExp( | 287 final asciiPunctuation = new RegExp( |
| 289 "[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]"); | 288 "[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]"); |
| 290 | 289 |
| 291 if (encoding == null) return null; | 290 if (encoding == null) return null; |
| 292 var canonicalName = encoding.replaceAll(asciiPunctuation, '').toLowerCase(); | 291 var canonicalName = encoding.replaceAll(asciiPunctuation, '').toLowerCase(); |
| 293 return encodings[canonicalName]; | 292 return encodings[canonicalName]; |
| 294 } | 293 } |
| OLD | NEW |