Index: sdk/lib/convert/line_splitter.dart |
diff --git a/sdk/lib/convert/line_splitter.dart b/sdk/lib/convert/line_splitter.dart |
index b5ec32bd6ee94bce6e248a2913cbf5c2e970991a..eddb800691e1333317a835bbc51a58fd0b6d3b3a 100644 |
--- a/sdk/lib/convert/line_splitter.dart |
+++ b/sdk/lib/convert/line_splitter.dart |
@@ -49,7 +49,29 @@ class LineSplitter extends Converter<String, List<String>> { |
} |
} |
- List<String> convert(String data) => split(data).toList(); |
+ List<String> convert(String data) { |
+ List lines = new List(); |
Lasse Reichstein Nielsen
2016/03/08 10:48:16
List<String> lines = <String>[];
hausner
2016/03/08 18:35:08
Done.
|
+ int end = data.length; |
+ int sliceStart = 0; |
+ int char = 0; |
+ for (int i = 0; i < end; i++) { |
+ int previousChar = char; |
+ char = data.codeUnitAt(i); |
+ if (char != _CR) { |
+ if (char != _LF) continue; |
+ if (previousChar == _CR) { |
+ sliceStart = i + 1; |
+ continue; |
+ } |
+ } |
+ lines.add(data.substring(sliceStart, i)); |
+ sliceStart = i + 1; |
+ } |
+ if (sliceStart < end) { |
+ lines.add(data.substring(sliceStart, end)); |
Lasse Reichstein Nielsen
2016/03/08 10:48:16
remove "end", just:
lines.add(data.substring(sli
hausner
2016/03/08 18:35:08
I like explicit parameters. Makes it clear(er) at
|
+ } |
+ return lines; |
+ } |
StringConversionSink startChunkedConversion(Sink<String> sink) { |
if (sink is! StringConversionSink) { |