Chromium Code Reviews| 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) { |