| Index: pkg/dev_compiler/tool/input_sdk/lib/convert/latin1.dart
|
| diff --git a/pkg/dev_compiler/tool/input_sdk/lib/convert/latin1.dart b/pkg/dev_compiler/tool/input_sdk/lib/convert/latin1.dart
|
| deleted file mode 100644
|
| index 1d8546d189b4b052a48c77586a97f2d3f047ad4e..0000000000000000000000000000000000000000
|
| --- a/pkg/dev_compiler/tool/input_sdk/lib/convert/latin1.dart
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -part of dart.convert;
|
| -
|
| -/**
|
| - * An instance of the default implementation of the [Latin1Codec].
|
| - *
|
| - * This instance provides a convenient access to the most common ISO Latin 1
|
| - * use cases.
|
| - *
|
| - * Examples:
|
| - *
|
| - * var encoded = LATIN1.encode("blåbærgrød");
|
| - * var decoded = LATIN1.decode([0x62, 0x6c, 0xe5, 0x62, 0xe6,
|
| - * 0x72, 0x67, 0x72, 0xf8, 0x64]);
|
| - */
|
| -const Latin1Codec LATIN1 = const Latin1Codec();
|
| -
|
| -const int _LATIN1_MASK = 0xFF;
|
| -
|
| -/**
|
| - * A [LatinCodec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes
|
| - * and decodes Latin-1 bytes to strings.
|
| - */
|
| -class Latin1Codec extends Encoding {
|
| - final bool _allowInvalid;
|
| - /**
|
| - * Instantiates a new [Latin1Codec].
|
| - *
|
| - * If [allowInvalid] is true, the [decode] method and the converter
|
| - * returned by [decoder] will default to allowing invalid values. Invalid
|
| - * values are decoded into the Unicode Replacement character (U+FFFD).
|
| - * Calls to the [decode] method can override this default.
|
| - *
|
| - * Encoders will not accept invalid (non Latin-1) characters.
|
| - */
|
| - const Latin1Codec({bool allowInvalid: false}) : _allowInvalid = allowInvalid;
|
| -
|
| - String get name => "iso-8859-1";
|
| -
|
| - /**
|
| - * Decodes the Latin-1 [bytes] (a list of unsigned 8-bit integers) to the
|
| - * corresponding string.
|
| - *
|
| - * If [bytes] contains values that are not in the range 0 .. 255, the decoder
|
| - * will eventually throw a [FormatException].
|
| - *
|
| - * If [allowInvalid] is not provided, it defaults to the value used to create
|
| - * this [Latin1Codec].
|
| - */
|
| - String decode(List<int> bytes, { bool allowInvalid }) {
|
| - if (allowInvalid == null) allowInvalid = _allowInvalid;
|
| - if (allowInvalid) {
|
| - return const Latin1Decoder(allowInvalid: true).convert(bytes);
|
| - } else {
|
| - return const Latin1Decoder(allowInvalid: false).convert(bytes);
|
| - }
|
| - }
|
| -
|
| - Latin1Encoder get encoder => const Latin1Encoder();
|
| -
|
| - Latin1Decoder get decoder =>
|
| - _allowInvalid ? const Latin1Decoder(allowInvalid: true)
|
| - : const Latin1Decoder(allowInvalid: false);
|
| -}
|
| -
|
| -/**
|
| - * This class converts strings of only ISO Latin-1 characters to bytes.
|
| - */
|
| -class Latin1Encoder extends _UnicodeSubsetEncoder {
|
| - const Latin1Encoder() : super(_LATIN1_MASK);
|
| -}
|
| -
|
| -/**
|
| - * This class converts Latin-1 bytes (lists of unsigned 8-bit integers)
|
| - * to a string.
|
| - */
|
| -class Latin1Decoder extends _UnicodeSubsetDecoder {
|
| - /**
|
| - * Instantiates a new [Latin1Decoder].
|
| - *
|
| - * The optional [allowInvalid] argument defines how [convert] deals
|
| - * with invalid bytes.
|
| - *
|
| - * If it is `true`, [convert] replaces invalid bytes with the Unicode
|
| - * Replacement character `U+FFFD` (�).
|
| - * Otherwise it throws a [FormatException].
|
| - */
|
| - const Latin1Decoder({ bool allowInvalid: false })
|
| - : super(allowInvalid, _LATIN1_MASK);
|
| -
|
| - /**
|
| - * Starts a chunked conversion.
|
| - *
|
| - * The converter works more efficiently if the given [sink] is a
|
| - * [StringConversionSink].
|
| - */
|
| - ByteConversionSink startChunkedConversion(Sink<String> sink) {
|
| - StringConversionSink stringSink;
|
| - if (sink is StringConversionSink) {
|
| - stringSink = sink;
|
| - } else {
|
| - stringSink = new StringConversionSink.from(sink);
|
| - }
|
| - // TODO(lrn): Use stringSink.asUtf16Sink() if it becomes available.
|
| - if (!_allowInvalid) return new _Latin1DecoderSink(stringSink);
|
| - return new _Latin1AllowInvalidDecoderSink(stringSink);
|
| - }
|
| -}
|
| -
|
| -class _Latin1DecoderSink extends ByteConversionSinkBase {
|
| - StringConversionSink _sink;
|
| - _Latin1DecoderSink(this._sink);
|
| -
|
| - void close() {
|
| - _sink.close();
|
| - _sink = null;
|
| - }
|
| -
|
| - void add(List<int> source) {
|
| - addSlice(source, 0, source.length, false);
|
| - }
|
| -
|
| - void _addSliceToSink(List<int> source, int start, int end, bool isLast) {
|
| - // If _sink was a UTF-16 conversion sink, just add the slice directly with
|
| - // _sink.addSlice(source, start, end, isLast).
|
| - // The code below is an moderately stupid workaround until a real
|
| - // solution can be made.
|
| - _sink.add(new String.fromCharCodes(source, start, end));
|
| - if (isLast) close();
|
| - }
|
| -
|
| - void addSlice(List<int> source, int start, int end, bool isLast) {
|
| - end = RangeError.checkValidRange(start, end, source.length);
|
| - if (start == end) return;
|
| - if (source is! Uint8List) {
|
| - // List may contain value outside of the 0..255 range. If so, throw.
|
| - // Technically, we could excuse Uint8ClampedList as well, but it unlikely
|
| - // to be relevant.
|
| - _checkValidLatin1(source, start, end);
|
| - }
|
| - _addSliceToSink(source, start, end, isLast);
|
| - }
|
| -
|
| - static void _checkValidLatin1(List<int> source, int start, int end) {
|
| - int mask = 0;
|
| - for (int i = start; i < end; i++) {
|
| - mask |= source[i];
|
| - }
|
| - if (mask >= 0 && mask <= _LATIN1_MASK) {
|
| - return;
|
| - }
|
| - _reportInvalidLatin1(source, start, end); // Always throws.
|
| - }
|
| -
|
| -
|
| - static void _reportInvalidLatin1(List<int> source, int start, int end) {
|
| - // Find the index of the first non-Latin-1 character code.
|
| - for (int i = start; i < end; i++) {
|
| - int char = source[i];
|
| - if (char < 0 || char > _LATIN1_MASK) {
|
| - throw new FormatException("Source contains non-Latin-1 characters.",
|
| - source, i);
|
| - }
|
| - }
|
| - // Unreachable - we only call the function if the loop above throws.
|
| - assert(false);
|
| - }
|
| -}
|
| -
|
| -class _Latin1AllowInvalidDecoderSink extends _Latin1DecoderSink {
|
| - _Latin1AllowInvalidDecoderSink(StringConversionSink sink): super(sink);
|
| -
|
| - void addSlice(List<int> source, int start, int end, bool isLast) {
|
| - RangeError.checkValidRange(start, end, source.length);
|
| - for (int i = start; i < end; i++) {
|
| - int char = source[i];
|
| - if (char > _LATIN1_MASK || char < 0) {
|
| - if (i > start) _addSliceToSink(source, start, i, false);
|
| - // Add UTF-8 encoding of U+FFFD.
|
| - _addSliceToSink(const[0xFFFD], 0, 1, false);
|
| - start = i + 1;
|
| - }
|
| - }
|
| - if (start < end) {
|
| - _addSliceToSink(source, start, end, isLast);
|
| - }
|
| - if (isLast) {
|
| - close();
|
| - }
|
| - }
|
| -}
|
|
|