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 /// The current system encoding. | 7 /// The current system encoding. |
8 /// | 8 /// |
9 /// This us used for converting from bytes to/from String when | 9 /// This us used for converting from bytes to/from String when |
10 /// communicating on stdin, stdout and stderr. | 10 /// communicating on stdin, stdout and stderr. |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 Converter<List<int>, String> get decoder { | 36 Converter<List<int>, String> get decoder { |
37 if (Platform.operatingSystem == "windows") { | 37 if (Platform.operatingSystem == "windows") { |
38 return const _WindowsCodePageDecoder(); | 38 return const _WindowsCodePageDecoder(); |
39 } else { | 39 } else { |
40 return const Utf8Decoder(); | 40 return const Utf8Decoder(); |
41 } | 41 } |
42 } | 42 } |
43 } | 43 } |
44 | 44 |
45 class _WindowsCodePageEncoder extends Converter<String, List<int>> { | 45 class _WindowsCodePageEncoder extends Converter<String, List<int>> |
| 46 implements ChunkedConverter<String, List<int>, String, List<int>> { |
46 | 47 |
47 const _WindowsCodePageEncoder(); | 48 const _WindowsCodePageEncoder(); |
48 | 49 |
49 List<int> convert(String input) { | 50 List<int> convert(String input) { |
50 List<int> encoded = _encodeString(input); | 51 List<int> encoded = _encodeString(input); |
51 if (encoded == null) { | 52 if (encoded == null) { |
52 throw new FormatException("Invalid character for encoding"); | 53 throw new FormatException("Invalid character for encoding"); |
53 } | 54 } |
54 return encoded; | 55 return encoded; |
55 } | 56 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 void addSlice(String source, int start, int end, bool isLast) { | 88 void addSlice(String source, int start, int end, bool isLast) { |
88 if (start != 0 || end != source.length) { | 89 if (start != 0 || end != source.length) { |
89 source = source.substring(start, end); | 90 source = source.substring(start, end); |
90 } | 91 } |
91 add(source); | 92 add(source); |
92 if (isLast) close(); | 93 if (isLast) close(); |
93 } | 94 } |
94 } | 95 } |
95 | 96 |
96 | 97 |
97 class _WindowsCodePageDecoder extends Converter<List<int>, String> { | 98 class _WindowsCodePageDecoder extends Converter<List<int>, String> |
| 99 implements ChunkedConverter<List<int>, String, List<int>, String> { |
98 | 100 |
99 const _WindowsCodePageDecoder(); | 101 const _WindowsCodePageDecoder(); |
100 | 102 |
101 String convert(List<int> input) { | 103 String convert(List<int> input) { |
102 return _decodeBytes(input); | 104 return _decodeBytes(input); |
103 } | 105 } |
104 | 106 |
105 /** | 107 /** |
106 * Starts a chunked conversion. | 108 * Starts a chunked conversion. |
107 */ | 109 */ |
(...skipping 13 matching lines...) Expand all Loading... |
121 _WindowsCodePageDecoderSink(this._sink); | 123 _WindowsCodePageDecoderSink(this._sink); |
122 | 124 |
123 void close() { | 125 void close() { |
124 _sink.close(); | 126 _sink.close(); |
125 } | 127 } |
126 | 128 |
127 void add(List<int> bytes) { | 129 void add(List<int> bytes) { |
128 _sink.add(_WindowsCodePageDecoder._decodeBytes(bytes)); | 130 _sink.add(_WindowsCodePageDecoder._decodeBytes(bytes)); |
129 } | 131 } |
130 } | 132 } |
OLD | NEW |