OLD | NEW |
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 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 /** | 7 /** |
8 * String encodings. | 8 * String encodings. |
9 */ | 9 */ |
10 class Encoding { | 10 class Encoding { |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 } | 213 } |
214 | 214 |
215 | 215 |
216 abstract class _SingleByteDecoder | 216 abstract class _SingleByteDecoder |
217 extends StreamEventTransformer<List<int>, String> { | 217 extends StreamEventTransformer<List<int>, String> { |
218 final int _replacementChar; | 218 final int _replacementChar; |
219 | 219 |
220 _SingleByteDecoder(this._replacementChar); | 220 _SingleByteDecoder(this._replacementChar); |
221 | 221 |
222 void handleData(List<int> data, StreamSink<String> sink) { | 222 void handleData(List<int> data, StreamSink<String> sink) { |
223 var buffer = new List<int>.fixedLength(data.length); | 223 var buffer = new List<int>(data.length); |
224 for (int i = 0; i < data.length; i++) { | 224 for (int i = 0; i < data.length; i++) { |
225 int char = _decodeByte(data[i]); | 225 int char = _decodeByte(data[i]); |
226 if (char < 0) char = _replacementChar; | 226 if (char < 0) char = _replacementChar; |
227 buffer[i] = char; | 227 buffer[i] = char; |
228 } | 228 } |
229 sink.add(new String.fromCharCodes(buffer)); | 229 sink.add(new String.fromCharCodes(buffer)); |
230 } | 230 } |
231 | 231 |
232 int _decodeByte(int byte); | 232 int _decodeByte(int byte); |
233 } | 233 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 | 306 |
307 // Utility class for decoding Windows current code page data delivered | 307 // Utility class for decoding Windows current code page data delivered |
308 // as a stream of bytes. | 308 // as a stream of bytes. |
309 class _WindowsCodePageDecoder extends StreamEventTransformer<List<int>, String>
{ | 309 class _WindowsCodePageDecoder extends StreamEventTransformer<List<int>, String>
{ |
310 void handleData(List<int> data, StreamSink<String> sink) { | 310 void handleData(List<int> data, StreamSink<String> sink) { |
311 sink.add(_decodeBytes(data)); | 311 sink.add(_decodeBytes(data)); |
312 } | 312 } |
313 | 313 |
314 external static String _decodeBytes(List<int> bytes); | 314 external static String _decodeBytes(List<int> bytes); |
315 } | 315 } |
OLD | NEW |