| Index: test/codegen/expect/dart/convert.js
|
| diff --git a/test/codegen/expect/dart/convert.js b/test/codegen/expect/dart/convert.js
|
| index 6bee7d14893458b62cdee97533e1dff8bc0a0ac6..2808a0bb499d26b101746705ab7a63f222dda654 100644
|
| --- a/test/codegen/expect/dart/convert.js
|
| +++ b/test/codegen/expect/dart/convert.js
|
| @@ -1,573 +1,302 @@
|
| var convert;
|
| (function(exports) {
|
| 'use strict';
|
| - let _processed = Symbol('_processed');
|
| - let _original = Symbol('_original');
|
| - // Function _convertJsonToDart: (dynamic, (dynamic, dynamic) → dynamic) → dynamic
|
| - function _convertJsonToDart(json, reviver) {
|
| - dart.assert(reviver !== null);
|
| - // Function walk: (dynamic) → dynamic
|
| - function walk(e) {
|
| - if (e == null || typeof e != "object") {
|
| - return e;
|
| - }
|
| - if (Object.getPrototypeOf(e) === Array.prototype) {
|
| - for (let i = 0; dart.notNull(i) < e.length; i = dart.notNull(i) + 1) {
|
| - let item = e[i];
|
| - e[i] = reviver(i, walk(item));
|
| - }
|
| - return e;
|
| - }
|
| - let map = new _JsonMap(e);
|
| - let processed = map[_processed];
|
| - let keys = map._computeKeys();
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| - let key = keys.get(i);
|
| - let revived = reviver(key, walk(e[key]));
|
| - processed[key] = revived;
|
| - }
|
| - map[_original] = processed;
|
| - return map;
|
| + let ASCII = new AsciiCodec();
|
| + let _ASCII_MASK = 127;
|
| + let _allowInvalid = Symbol('_allowInvalid');
|
| + class AsciiCodec extends Encoding {
|
| + AsciiCodec(opt$) {
|
| + let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid;
|
| + this[_allowInvalid] = allowInvalid;
|
| + super.Encoding();
|
| }
|
| - return reviver(null, walk(json));
|
| - }
|
| - // Function _convertJsonToDartLazy: (dynamic) → dynamic
|
| - function _convertJsonToDartLazy(object) {
|
| - if (object === null)
|
| - return null;
|
| - if (typeof object != "object") {
|
| - return object;
|
| + get name() {
|
| + return "us-ascii";
|
| }
|
| - if (Object.getPrototypeOf(object) !== Array.prototype) {
|
| - return new _JsonMap(object);
|
| + decode(bytes, opt$) {
|
| + let allowInvalid = opt$.allowInvalid === void 0 ? null : opt$.allowInvalid;
|
| + if (allowInvalid === null)
|
| + allowInvalid = this[_allowInvalid];
|
| + if (allowInvalid) {
|
| + return new AsciiDecoder({allowInvalid: true}).convert(bytes);
|
| + } else {
|
| + return new AsciiDecoder({allowInvalid: false}).convert(bytes);
|
| + }
|
| }
|
| - for (let i = 0; dart.notNull(i) < object.length; i = dart.notNull(i) + 1) {
|
| - let item = object[i];
|
| - object[i] = _convertJsonToDartLazy(item);
|
| + get encoder() {
|
| + return new AsciiEncoder();
|
| + }
|
| + get decoder() {
|
| + return this[_allowInvalid] ? new AsciiDecoder({allowInvalid: true}) : new AsciiDecoder({allowInvalid: false});
|
| }
|
| - return object;
|
| }
|
| - let _data = Symbol('_data');
|
| - let _isUpgraded = Symbol('_isUpgraded');
|
| - let _upgradedMap = Symbol('_upgradedMap');
|
| - let _process = Symbol('_process');
|
| - let _computeKeys = Symbol('_computeKeys');
|
| - let _upgrade = Symbol('_upgrade');
|
| - let _hasProperty = Symbol('_hasProperty');
|
| - let _getProperty = Symbol('_getProperty');
|
| - let _setProperty = Symbol('_setProperty');
|
| - let _getPropertyNames = Symbol('_getPropertyNames');
|
| - let _isUnprocessed = Symbol('_isUnprocessed');
|
| - let _newJavaScriptObject = Symbol('_newJavaScriptObject');
|
| - class _JsonMap extends dart.Object {
|
| - _JsonMap($_original) {
|
| - this[_processed] = _newJavaScriptObject();
|
| - this[_original] = $_original;
|
| - this[_data] = null;
|
| + let _subsetMask = Symbol('_subsetMask');
|
| + class _UnicodeSubsetEncoder extends Converter$(core.String, core.List$(core.int)) {
|
| + _UnicodeSubsetEncoder($_subsetMask) {
|
| + this[_subsetMask] = $_subsetMask;
|
| + super.Converter();
|
| }
|
| - get(key) {
|
| - if (this[_isUpgraded]) {
|
| - return this[_upgradedMap].get(key);
|
| - } else if (!(typeof key == string)) {
|
| - return null;
|
| - } else {
|
| - let result = _getProperty(this[_processed], dart.as(key, core.String));
|
| - if (_isUnprocessed(result))
|
| - result = this[_process](dart.as(key, core.String));
|
| - return result;
|
| + convert(string, start, end) {
|
| + if (start === void 0)
|
| + start = 0;
|
| + if (end === void 0)
|
| + end = null;
|
| + let stringLength = string.length;
|
| + core.RangeError.checkValidRange(start, end, stringLength);
|
| + if (end === null)
|
| + end = stringLength;
|
| + let length = dart.notNull(end) - dart.notNull(start);
|
| + let result = new typed_data.Uint8List(length);
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
|
| + let codeUnit = string.codeUnitAt(dart.notNull(start) + dart.notNull(i));
|
| + if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| + throw new core.ArgumentError("String contains invalid characters.");
|
| + }
|
| + result.set(i, codeUnit);
|
| }
|
| + return dart.as(result, core.List$(core.int));
|
| }
|
| - get length() {
|
| - return this[_isUpgraded] ? this[_upgradedMap].length : this[_computeKeys]().length;
|
| + startChunkedConversion(sink) {
|
| + if (!dart.is(sink, ByteConversionSink)) {
|
| + sink = new ByteConversionSink.from(sink);
|
| + }
|
| + return new _UnicodeSubsetEncoderSink(this[_subsetMask], dart.as(sink, ByteConversionSink));
|
| }
|
| - get isEmpty() {
|
| - return this.length === 0;
|
| + bind(stream) {
|
| + return dart.as(super.bind(stream), async.Stream$(core.List$(core.int)));
|
| }
|
| - get isNotEmpty() {
|
| - return dart.notNull(this.length) > 0;
|
| + }
|
| + class AsciiEncoder extends _UnicodeSubsetEncoder {
|
| + AsciiEncoder() {
|
| + super._UnicodeSubsetEncoder(_ASCII_MASK);
|
| }
|
| - get keys() {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap].keys;
|
| - return new _JsonMapKeyIterable(this);
|
| + }
|
| + let _sink = Symbol('_sink');
|
| + class _UnicodeSubsetEncoderSink extends StringConversionSinkBase {
|
| + _UnicodeSubsetEncoderSink($_subsetMask, $_sink) {
|
| + this[_subsetMask] = $_subsetMask;
|
| + this[_sink] = $_sink;
|
| + super.StringConversionSinkBase();
|
| }
|
| - get values() {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap].values;
|
| - return new _internal.MappedIterable(this[_computeKeys](), ((each) => this.get(each)).bind(this));
|
| + close() {
|
| + this[_sink].close();
|
| }
|
| - set(key, value) {
|
| - if (this[_isUpgraded]) {
|
| - this[_upgradedMap].set(key, value);
|
| - } else if (this.containsKey(key)) {
|
| - let processed = this[_processed];
|
| - _setProperty(processed, dart.as(key, core.String), value);
|
| - let original = this[_original];
|
| - if (!dart.notNull(core.identical(original, processed))) {
|
| - _setProperty(original, dart.as(key, core.String), null);
|
| + addSlice(source, start, end, isLast) {
|
| + core.RangeError.checkValidRange(start, end, source.length);
|
| + for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| + let codeUnit = source.codeUnitAt(i);
|
| + if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| + throw new core.ArgumentError(`Source contains invalid character with code point: ${codeUnit}.`);
|
| }
|
| - } else {
|
| - this[_upgrade]().set(key, value);
|
| + }
|
| + this[_sink].add(source.codeUnits.sublist(start, end));
|
| + if (isLast) {
|
| + this.close();
|
| }
|
| }
|
| - addAll(other) {
|
| - other.forEach(((key, value) => {
|
| - this.set(key, value);
|
| - }).bind(this));
|
| + }
|
| + let _convertInvalid = Symbol('_convertInvalid');
|
| + class _UnicodeSubsetDecoder extends Converter$(core.List$(core.int), core.String) {
|
| + _UnicodeSubsetDecoder($_allowInvalid, $_subsetMask) {
|
| + this[_allowInvalid] = $_allowInvalid;
|
| + this[_subsetMask] = $_subsetMask;
|
| + super.Converter();
|
| }
|
| - containsValue(value) {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap].containsValue(value);
|
| - let keys = this[_computeKeys]();
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| - let key = keys.get(i);
|
| - if (dart.equals(this.get(key), value))
|
| - return true;
|
| + convert(bytes, start, end) {
|
| + if (start === void 0)
|
| + start = 0;
|
| + if (end === void 0)
|
| + end = null;
|
| + let byteCount = bytes.length;
|
| + core.RangeError.checkValidRange(start, end, byteCount);
|
| + if (end === null)
|
| + end = byteCount;
|
| + let length = dart.notNull(end) - dart.notNull(start);
|
| + for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| + let byte = bytes.get(i);
|
| + if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| + if (!dart.notNull(this[_allowInvalid])) {
|
| + throw new core.FormatException(`Invalid value in input: ${byte}`);
|
| + }
|
| + return this[_convertInvalid](bytes, start, end);
|
| + }
|
| }
|
| - return false;
|
| + return new core.String.fromCharCodes(bytes, start, end);
|
| }
|
| - containsKey(key) {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap].containsKey(key);
|
| - if (!(typeof key == string))
|
| - return false;
|
| - return _hasProperty(this[_original], dart.as(key, core.String));
|
| + [_convertInvalid](bytes, start, end) {
|
| + let buffer = new core.StringBuffer();
|
| + for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| + let value = bytes.get(i);
|
| + if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) !== 0)
|
| + value = 65533;
|
| + buffer.writeCharCode(value);
|
| + }
|
| + return buffer.toString();
|
| }
|
| - putIfAbsent(key, ifAbsent) {
|
| - if (this.containsKey(key))
|
| - return this.get(key);
|
| - let value = ifAbsent();
|
| - this.set(key, value);
|
| - return value;
|
| + bind(stream) {
|
| + return dart.as(super.bind(stream), async.Stream$(core.String));
|
| }
|
| - remove(key) {
|
| - if (!dart.notNull(this[_isUpgraded]) && !dart.notNull(this.containsKey(key)))
|
| - return null;
|
| - return this[_upgrade]().remove(key);
|
| + }
|
| + class AsciiDecoder extends _UnicodeSubsetDecoder {
|
| + AsciiDecoder(opt$) {
|
| + let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid;
|
| + super._UnicodeSubsetDecoder(allowInvalid, _ASCII_MASK);
|
| }
|
| - clear() {
|
| - if (this[_isUpgraded]) {
|
| - this[_upgradedMap].clear();
|
| + startChunkedConversion(sink) {
|
| + let stringSink = null;
|
| + if (dart.is(sink, StringConversionSink)) {
|
| + stringSink = sink;
|
| } else {
|
| - if (this[_data] !== null) {
|
| - dart.dinvoke(this[_data], 'clear');
|
| - }
|
| - this[_original] = this[_processed] = null;
|
| - this[_data] = dart.map();
|
| + stringSink = new StringConversionSink.from(sink);
|
| }
|
| - }
|
| - forEach(f) {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap].forEach(f);
|
| - let keys = this[_computeKeys]();
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| - let key = keys.get(i);
|
| - let value = _getProperty(this[_processed], key);
|
| - if (_isUnprocessed(value)) {
|
| - value = _convertJsonToDartLazy(_getProperty(this[_original], key));
|
| - _setProperty(this[_processed], key, value);
|
| - }
|
| - f(key, value);
|
| - if (!dart.notNull(core.identical(keys, this[_data]))) {
|
| - throw new core.ConcurrentModificationError(this);
|
| - }
|
| + if (this[_allowInvalid]) {
|
| + return new _ErrorHandlingAsciiDecoderSink(stringSink.asUtf8Sink(false));
|
| + } else {
|
| + return new _SimpleAsciiDecoderSink(stringSink);
|
| }
|
| }
|
| - toString() {
|
| - return collection.Maps.mapToString(this);
|
| - }
|
| - get [_isUpgraded]() {
|
| - return this[_processed] === null;
|
| + }
|
| + let _utf8Sink = Symbol('_utf8Sink');
|
| + class _ErrorHandlingAsciiDecoderSink extends ByteConversionSinkBase {
|
| + _ErrorHandlingAsciiDecoderSink($_utf8Sink) {
|
| + this[_utf8Sink] = $_utf8Sink;
|
| + super.ByteConversionSinkBase();
|
| }
|
| - get [_upgradedMap]() {
|
| - dart.assert(this[_isUpgraded]);
|
| - return dart.as(this[_data], core.Map);
|
| + close() {
|
| + this[_utf8Sink].close();
|
| }
|
| - [_computeKeys]() {
|
| - dart.assert(!dart.notNull(this[_isUpgraded]));
|
| - let keys = dart.as(this[_data], core.List);
|
| - if (keys === null) {
|
| - keys = this[_data] = _getPropertyNames(this[_original]);
|
| - }
|
| - return dart.as(keys, core.List$(core.String));
|
| + add(source) {
|
| + this.addSlice(source, 0, source.length, false);
|
| }
|
| - [_upgrade]() {
|
| - if (this[_isUpgraded])
|
| - return this[_upgradedMap];
|
| - let result = dart.map();
|
| - let keys = this[_computeKeys]();
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| - let key = keys.get(i);
|
| - result.set(key, this.get(key));
|
| + addSlice(source, start, end, isLast) {
|
| + core.RangeError.checkValidRange(start, end, source.length);
|
| + for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| + if ((dart.notNull(source.get(i)) & ~dart.notNull(_ASCII_MASK)) !== 0) {
|
| + if (dart.notNull(i) > dart.notNull(start))
|
| + this[_utf8Sink].addSlice(source, start, i, false);
|
| + this[_utf8Sink].add(/* Unimplemented const */new List.from([239, 191, 189]));
|
| + start = dart.notNull(i) + 1;
|
| + }
|
| }
|
| - if (keys.isEmpty) {
|
| - keys.add(null);
|
| - } else {
|
| - keys.clear();
|
| + if (dart.notNull(start) < dart.notNull(end)) {
|
| + this[_utf8Sink].addSlice(source, start, end, isLast);
|
| + } else if (isLast) {
|
| + this.close();
|
| }
|
| - this[_original] = this[_processed] = null;
|
| - this[_data] = result;
|
| - dart.assert(this[_isUpgraded]);
|
| - return result;
|
| - }
|
| - [_process](key) {
|
| - if (!dart.notNull(_hasProperty(this[_original], key)))
|
| - return null;
|
| - let result = _convertJsonToDartLazy(_getProperty(this[_original], key));
|
| - return _setProperty(this[_processed], key, result);
|
| - }
|
| - static [_hasProperty](object, key) {
|
| - return Object.prototype.hasOwnProperty.call(object, key);
|
| }
|
| - static [_getProperty](object, key) {
|
| - return object[key];
|
| - }
|
| - static [_setProperty](object, key, value) {
|
| - return object[key] = value;
|
| + }
|
| + class _SimpleAsciiDecoderSink extends ByteConversionSinkBase {
|
| + _SimpleAsciiDecoderSink($_sink) {
|
| + this[_sink] = $_sink;
|
| + super.ByteConversionSinkBase();
|
| }
|
| - static [_getPropertyNames](object) {
|
| - return dart.as(Object.keys(object), core.List);
|
| + close() {
|
| + this[_sink].close();
|
| }
|
| - static [_isUnprocessed](object) {
|
| - return typeof object == "undefined";
|
| + add(source) {
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(source.length); i = dart.notNull(i) + 1) {
|
| + if ((dart.notNull(source.get(i)) & ~dart.notNull(_ASCII_MASK)) !== 0) {
|
| + throw new core.FormatException("Source contains non-ASCII bytes.");
|
| + }
|
| + }
|
| + this[_sink].add(new core.String.fromCharCodes(source));
|
| }
|
| - static [_newJavaScriptObject]() {
|
| - return Object.create(null);
|
| + addSlice(source, start, end, isLast) {
|
| + let length = source.length;
|
| + core.RangeError.checkValidRange(start, end, length);
|
| + if (dart.notNull(start) < dart.notNull(end)) {
|
| + if (start !== 0 || end !== length) {
|
| + source = source.sublist(start, end);
|
| + }
|
| + this.add(source);
|
| + }
|
| + if (isLast)
|
| + this.close();
|
| }
|
| }
|
| - let _parent = Symbol('_parent');
|
| - class _JsonMapKeyIterable extends _internal.ListIterable {
|
| - _JsonMapKeyIterable($_parent) {
|
| - this[_parent] = $_parent;
|
| - super.ListIterable();
|
| - }
|
| - get length() {
|
| - return this[_parent].length;
|
| + class ByteConversionSink extends ChunkedConversionSink$(core.List$(core.int)) {
|
| + ByteConversionSink() {
|
| + super.ChunkedConversionSink();
|
| }
|
| - elementAt(index) {
|
| - return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys.elementAt(index) : this[_parent]._computeKeys().get(index), core.String);
|
| + ByteConversionSink$withCallback(callback) {
|
| + return new _ByteCallbackSink(callback);
|
| }
|
| - get iterator() {
|
| - return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys.iterator : this[_parent]._computeKeys().iterator, core.Iterator);
|
| + ByteConversionSink$from(sink) {
|
| + return new _ByteAdapterSink(sink);
|
| }
|
| - contains(key) {
|
| - return this[_parent].containsKey(key);
|
| + }
|
| + dart.defineNamedConstructor(ByteConversionSink, 'withCallback');
|
| + dart.defineNamedConstructor(ByteConversionSink, 'from');
|
| + class ByteConversionSinkBase extends ByteConversionSink {
|
| + addSlice(chunk, start, end, isLast) {
|
| + this.add(chunk.sublist(start, end));
|
| + if (isLast)
|
| + this.close();
|
| }
|
| }
|
| - let _reviver = Symbol('_reviver');
|
| - let _sink = Symbol('_sink');
|
| - let _stringSink = Symbol('_stringSink');
|
| - class _JsonDecoderSink extends _StringSinkConversionSink {
|
| - _JsonDecoderSink($_reviver, $_sink) {
|
| - this[_reviver] = $_reviver;
|
| + class _ByteAdapterSink extends ByteConversionSinkBase {
|
| + _ByteAdapterSink($_sink) {
|
| this[_sink] = $_sink;
|
| - super._StringSinkConversionSink(new core.StringBuffer());
|
| + super.ByteConversionSinkBase();
|
| + }
|
| + add(chunk) {
|
| + return this[_sink].add(chunk);
|
| }
|
| close() {
|
| - super.close();
|
| - let buffer = dart.as(this[_stringSink], core.StringBuffer);
|
| - let accumulated = buffer.toString();
|
| - buffer.clear();
|
| - let decoded = _parseJson(accumulated, this[_reviver]);
|
| - this[_sink].add(decoded);
|
| - this[_sink].close();
|
| + return this[_sink].close();
|
| }
|
| }
|
| - let ASCII = new AsciiCodec();
|
| - let _ASCII_MASK = 127;
|
| - let _allowInvalid = Symbol('_allowInvalid');
|
| - class AsciiCodec extends Encoding {
|
| - AsciiCodec(opt$) {
|
| - let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid;
|
| - this[_allowInvalid] = allowInvalid;
|
| - super.Encoding();
|
| - }
|
| - get name() {
|
| - return "us-ascii";
|
| + let _buffer = Symbol('_buffer');
|
| + let _callback = Symbol('_callback');
|
| + let _bufferIndex = Symbol('_bufferIndex');
|
| + let _roundToPowerOf2 = Symbol('_roundToPowerOf2');
|
| + class _ByteCallbackSink extends ByteConversionSinkBase {
|
| + _ByteCallbackSink(callback) {
|
| + this[_buffer] = new typed_data.Uint8List(dart.as(_ByteCallbackSink._INITIAL_BUFFER_SIZE, core.int));
|
| + this[_callback] = callback;
|
| + this[_bufferIndex] = 0;
|
| + super.ByteConversionSinkBase();
|
| }
|
| - decode(bytes, opt$) {
|
| - let allowInvalid = opt$.allowInvalid === void 0 ? null : opt$.allowInvalid;
|
| - if (allowInvalid === null)
|
| - allowInvalid = this[_allowInvalid];
|
| - if (allowInvalid) {
|
| - return new AsciiDecoder({allowInvalid: true}).convert(bytes);
|
| - } else {
|
| - return new AsciiDecoder({allowInvalid: false}).convert(bytes);
|
| + add(chunk) {
|
| + let freeCount = dart.notNull(this[_buffer].length) - dart.notNull(this[_bufferIndex]);
|
| + if (dart.notNull(chunk.length) > dart.notNull(freeCount)) {
|
| + let oldLength = this[_buffer].length;
|
| + let newLength = dart.notNull(_roundToPowerOf2(dart.notNull(chunk.length) + dart.notNull(oldLength))) * 2;
|
| + let grown = new typed_data.Uint8List(newLength);
|
| + grown.setRange(0, this[_buffer].length, this[_buffer]);
|
| + this[_buffer] = grown;
|
| }
|
| + this[_buffer].setRange(this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk.length), chunk);
|
| + this[_bufferIndex] = chunk.length;
|
| }
|
| - get encoder() {
|
| - return new AsciiEncoder();
|
| + static [_roundToPowerOf2](v) {
|
| + dart.assert(dart.notNull(v) > 0);
|
| + v = dart.notNull(v) - 1;
|
| + v = dart.notNull(v) >> 1;
|
| + v = dart.notNull(v) >> 2;
|
| + v = dart.notNull(v) >> 4;
|
| + v = dart.notNull(v) >> 8;
|
| + v = dart.notNull(v) >> 16;
|
| + v = dart.notNull(v) + 1;
|
| + return v;
|
| }
|
| - get decoder() {
|
| - return this[_allowInvalid] ? new AsciiDecoder({allowInvalid: true}) : new AsciiDecoder({allowInvalid: false});
|
| + close() {
|
| + this[_callback](this[_buffer].sublist(0, this[_bufferIndex]));
|
| }
|
| }
|
| - let _subsetMask = Symbol('_subsetMask');
|
| - class _UnicodeSubsetEncoder extends Converter$(core.String, core.List$(core.int)) {
|
| - _UnicodeSubsetEncoder($_subsetMask) {
|
| - this[_subsetMask] = $_subsetMask;
|
| - super.Converter();
|
| - }
|
| - convert(string, start, end) {
|
| - if (start === void 0)
|
| - start = 0;
|
| - if (end === void 0)
|
| - end = null;
|
| - let stringLength = string.length;
|
| - core.RangeError.checkValidRange(start, end, stringLength);
|
| - if (end === null)
|
| - end = stringLength;
|
| - let length = dart.notNull(end) - dart.notNull(start);
|
| - let result = new typed_data.Uint8List(length);
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
|
| - let codeUnit = string.codeUnitAt(dart.notNull(start) + dart.notNull(i));
|
| - if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| - throw new core.ArgumentError("String contains invalid characters.");
|
| - }
|
| - result.set(i, codeUnit);
|
| + _ByteCallbackSink._INITIAL_BUFFER_SIZE = 1024;
|
| + let ChunkedConversionSink$ = dart.generic(function(T) {
|
| + class ChunkedConversionSink extends core.Object {
|
| + ChunkedConversionSink() {
|
| }
|
| - return dart.as(result, core.List$(core.int));
|
| - }
|
| - startChunkedConversion(sink) {
|
| - if (!dart.is(sink, ByteConversionSink)) {
|
| - sink = new ByteConversionSink.from(sink);
|
| - }
|
| - return new _UnicodeSubsetEncoderSink(this[_subsetMask], dart.as(sink, ByteConversionSink));
|
| - }
|
| - bind(stream) {
|
| - return dart.as(super.bind(stream), async.Stream$(core.List$(core.int)));
|
| - }
|
| - }
|
| - class AsciiEncoder extends _UnicodeSubsetEncoder {
|
| - AsciiEncoder() {
|
| - super._UnicodeSubsetEncoder(_ASCII_MASK);
|
| - }
|
| - }
|
| - class _UnicodeSubsetEncoderSink extends StringConversionSinkBase {
|
| - _UnicodeSubsetEncoderSink($_subsetMask, $_sink) {
|
| - this[_subsetMask] = $_subsetMask;
|
| - this[_sink] = $_sink;
|
| - super.StringConversionSinkBase();
|
| - }
|
| - close() {
|
| - this[_sink].close();
|
| - }
|
| - addSlice(source, start, end, isLast) {
|
| - core.RangeError.checkValidRange(start, end, source.length);
|
| - for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| - let codeUnit = source.codeUnitAt(i);
|
| - if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| - throw new core.ArgumentError(`Source contains invalid character with code point: ${codeUnit}.`);
|
| - }
|
| - }
|
| - this[_sink].add(source.codeUnits.sublist(start, end));
|
| - if (isLast) {
|
| - this.close();
|
| - }
|
| - }
|
| - }
|
| - let _convertInvalid = Symbol('_convertInvalid');
|
| - class _UnicodeSubsetDecoder extends Converter$(core.List$(core.int), core.String) {
|
| - _UnicodeSubsetDecoder($_allowInvalid, $_subsetMask) {
|
| - this[_allowInvalid] = $_allowInvalid;
|
| - this[_subsetMask] = $_subsetMask;
|
| - super.Converter();
|
| - }
|
| - convert(bytes, start, end) {
|
| - if (start === void 0)
|
| - start = 0;
|
| - if (end === void 0)
|
| - end = null;
|
| - let byteCount = bytes.length;
|
| - core.RangeError.checkValidRange(start, end, byteCount);
|
| - if (end === null)
|
| - end = byteCount;
|
| - let length = dart.notNull(end) - dart.notNull(start);
|
| - for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| - let byte = bytes.get(i);
|
| - if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) !== 0) {
|
| - if (!dart.notNull(this[_allowInvalid])) {
|
| - throw new core.FormatException(`Invalid value in input: ${byte}`);
|
| - }
|
| - return this[_convertInvalid](bytes, start, end);
|
| - }
|
| - }
|
| - return new core.String.fromCharCodes(bytes, start, end);
|
| - }
|
| - [_convertInvalid](bytes, start, end) {
|
| - let buffer = new core.StringBuffer();
|
| - for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| - let value = bytes.get(i);
|
| - if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) !== 0)
|
| - value = 65533;
|
| - buffer.writeCharCode(value);
|
| - }
|
| - return buffer.toString();
|
| - }
|
| - bind(stream) {
|
| - return dart.as(super.bind(stream), async.Stream$(core.String));
|
| - }
|
| - }
|
| - class AsciiDecoder extends _UnicodeSubsetDecoder {
|
| - AsciiDecoder(opt$) {
|
| - let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid;
|
| - super._UnicodeSubsetDecoder(allowInvalid, _ASCII_MASK);
|
| - }
|
| - startChunkedConversion(sink) {
|
| - let stringSink = null;
|
| - if (dart.is(sink, StringConversionSink)) {
|
| - stringSink = sink;
|
| - } else {
|
| - stringSink = new StringConversionSink.from(sink);
|
| - }
|
| - if (this[_allowInvalid]) {
|
| - return new _ErrorHandlingAsciiDecoderSink(stringSink.asUtf8Sink(false));
|
| - } else {
|
| - return new _SimpleAsciiDecoderSink(stringSink);
|
| - }
|
| - }
|
| - }
|
| - let _utf8Sink = Symbol('_utf8Sink');
|
| - class _ErrorHandlingAsciiDecoderSink extends ByteConversionSinkBase {
|
| - _ErrorHandlingAsciiDecoderSink($_utf8Sink) {
|
| - this[_utf8Sink] = $_utf8Sink;
|
| - super.ByteConversionSinkBase();
|
| - }
|
| - close() {
|
| - this[_utf8Sink].close();
|
| - }
|
| - add(source) {
|
| - this.addSlice(source, 0, source.length, false);
|
| - }
|
| - addSlice(source, start, end, isLast) {
|
| - core.RangeError.checkValidRange(start, end, source.length);
|
| - for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
|
| - if ((dart.notNull(source.get(i)) & ~dart.notNull(_ASCII_MASK)) !== 0) {
|
| - if (dart.notNull(i) > dart.notNull(start))
|
| - this[_utf8Sink].addSlice(source, start, i, false);
|
| - this[_utf8Sink].add(/* Unimplemented const */new List.from([239, 191, 189]));
|
| - start = dart.notNull(i) + 1;
|
| - }
|
| - }
|
| - if (dart.notNull(start) < dart.notNull(end)) {
|
| - this[_utf8Sink].addSlice(source, start, end, isLast);
|
| - } else if (isLast) {
|
| - this.close();
|
| - }
|
| - }
|
| - }
|
| - class _SimpleAsciiDecoderSink extends ByteConversionSinkBase {
|
| - _SimpleAsciiDecoderSink($_sink) {
|
| - this[_sink] = $_sink;
|
| - super.ByteConversionSinkBase();
|
| - }
|
| - close() {
|
| - this[_sink].close();
|
| - }
|
| - add(source) {
|
| - for (let i = 0; dart.notNull(i) < dart.notNull(source.length); i = dart.notNull(i) + 1) {
|
| - if ((dart.notNull(source.get(i)) & ~dart.notNull(_ASCII_MASK)) !== 0) {
|
| - throw new core.FormatException("Source contains non-ASCII bytes.");
|
| - }
|
| - }
|
| - this[_sink].add(new core.String.fromCharCodes(source));
|
| - }
|
| - addSlice(source, start, end, isLast) {
|
| - let length = source.length;
|
| - core.RangeError.checkValidRange(start, end, length);
|
| - if (dart.notNull(start) < dart.notNull(end)) {
|
| - if (start !== 0 || end !== length) {
|
| - source = source.sublist(start, end);
|
| - }
|
| - this.add(source);
|
| - }
|
| - if (isLast)
|
| - this.close();
|
| - }
|
| - }
|
| - class ByteConversionSink extends ChunkedConversionSink$(core.List$(core.int)) {
|
| - ByteConversionSink() {
|
| - super.ChunkedConversionSink();
|
| - }
|
| - ByteConversionSink$withCallback(callback) {
|
| - return new _ByteCallbackSink(callback);
|
| - }
|
| - ByteConversionSink$from(sink) {
|
| - return new _ByteAdapterSink(sink);
|
| - }
|
| - }
|
| - dart.defineNamedConstructor(ByteConversionSink, 'withCallback');
|
| - dart.defineNamedConstructor(ByteConversionSink, 'from');
|
| - class ByteConversionSinkBase extends ByteConversionSink {
|
| - addSlice(chunk, start, end, isLast) {
|
| - this.add(chunk.sublist(start, end));
|
| - if (isLast)
|
| - this.close();
|
| - }
|
| - }
|
| - class _ByteAdapterSink extends ByteConversionSinkBase {
|
| - _ByteAdapterSink($_sink) {
|
| - this[_sink] = $_sink;
|
| - super.ByteConversionSinkBase();
|
| - }
|
| - add(chunk) {
|
| - return this[_sink].add(chunk);
|
| - }
|
| - close() {
|
| - return this[_sink].close();
|
| - }
|
| - }
|
| - let _buffer = Symbol('_buffer');
|
| - let _callback = Symbol('_callback');
|
| - let _bufferIndex = Symbol('_bufferIndex');
|
| - let _roundToPowerOf2 = Symbol('_roundToPowerOf2');
|
| - class _ByteCallbackSink extends ByteConversionSinkBase {
|
| - _ByteCallbackSink(callback) {
|
| - this[_buffer] = new typed_data.Uint8List(dart.as(_INITIAL_BUFFER_SIZE, core.int));
|
| - this[_callback] = callback;
|
| - this[_bufferIndex] = 0;
|
| - super.ByteConversionSinkBase();
|
| - }
|
| - add(chunk) {
|
| - let freeCount = dart.notNull(this[_buffer].length) - dart.notNull(this[_bufferIndex]);
|
| - if (dart.notNull(chunk.length) > dart.notNull(freeCount)) {
|
| - let oldLength = this[_buffer].length;
|
| - let newLength = dart.notNull(_roundToPowerOf2(dart.notNull(chunk.length) + dart.notNull(oldLength))) * 2;
|
| - let grown = new typed_data.Uint8List(newLength);
|
| - grown.setRange(0, this[_buffer].length, this[_buffer]);
|
| - this[_buffer] = grown;
|
| - }
|
| - this[_buffer].setRange(this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk.length), chunk);
|
| - this[_bufferIndex] = chunk.length;
|
| - }
|
| - static [_roundToPowerOf2](v) {
|
| - dart.assert(dart.notNull(v) > 0);
|
| - v = dart.notNull(v) - 1;
|
| - v = dart.notNull(v) >> 1;
|
| - v = dart.notNull(v) >> 2;
|
| - v = dart.notNull(v) >> 4;
|
| - v = dart.notNull(v) >> 8;
|
| - v = dart.notNull(v) >> 16;
|
| - v = dart.notNull(v) + 1;
|
| - return v;
|
| - }
|
| - close() {
|
| - this[_callback](this[_buffer].sublist(0, this[_bufferIndex]));
|
| - }
|
| - }
|
| - _ByteCallbackSink._INITIAL_BUFFER_SIZE = 1024;
|
| - let ChunkedConversionSink$ = dart.generic(function(T) {
|
| - class ChunkedConversionSink extends dart.Object {
|
| - ChunkedConversionSink() {
|
| - }
|
| - ChunkedConversionSink$withCallback(callback) {
|
| - return new _SimpleCallbackSink(callback);
|
| + ChunkedConversionSink$withCallback(callback) {
|
| + return new _SimpleCallbackSink(callback);
|
| }
|
| }
|
| dart.defineNamedConstructor(ChunkedConversionSink, 'withCallback');
|
| return ChunkedConversionSink;
|
| });
|
| - let ChunkedConversionSink = ChunkedConversionSink$(dynamic);
|
| + let ChunkedConversionSink = ChunkedConversionSink$(dart.dynamic);
|
| let _accumulated = Symbol('_accumulated');
|
| let _SimpleCallbackSink$ = dart.generic(function(T) {
|
| class _SimpleCallbackSink extends ChunkedConversionSink$(T) {
|
| @@ -585,9 +314,9 @@ var convert;
|
| }
|
| return _SimpleCallbackSink;
|
| });
|
| - let _SimpleCallbackSink = _SimpleCallbackSink$(dynamic);
|
| + let _SimpleCallbackSink = _SimpleCallbackSink$(dart.dynamic);
|
| let _EventSinkAdapter$ = dart.generic(function(T) {
|
| - class _EventSinkAdapter extends dart.Object {
|
| + class _EventSinkAdapter extends core.Object {
|
| _EventSinkAdapter($_sink) {
|
| this[_sink] = $_sink;
|
| }
|
| @@ -600,11 +329,11 @@ var convert;
|
| }
|
| return _EventSinkAdapter;
|
| });
|
| - let _EventSinkAdapter = _EventSinkAdapter$(dynamic);
|
| + let _EventSinkAdapter = _EventSinkAdapter$(dart.dynamic);
|
| let _eventSink = Symbol('_eventSink');
|
| let _chunkedSink = Symbol('_chunkedSink');
|
| let _ConverterStreamEventSink$ = dart.generic(function(S, T) {
|
| - class _ConverterStreamEventSink extends dart.Object {
|
| + class _ConverterStreamEventSink extends core.Object {
|
| _ConverterStreamEventSink(converter, sink) {
|
| this[_eventSink] = sink;
|
| this[_chunkedSink] = converter.startChunkedConversion(sink);
|
| @@ -623,9 +352,9 @@ var convert;
|
| }
|
| return _ConverterStreamEventSink;
|
| });
|
| - let _ConverterStreamEventSink = _ConverterStreamEventSink$(dynamic, dynamic);
|
| + let _ConverterStreamEventSink = _ConverterStreamEventSink$(dart.dynamic, dart.dynamic);
|
| let Codec$ = dart.generic(function(S, T) {
|
| - class Codec extends dart.Object {
|
| + class Codec extends core.Object {
|
| Codec() {
|
| }
|
| encode(input) {
|
| @@ -643,7 +372,7 @@ var convert;
|
| }
|
| return Codec;
|
| });
|
| - let Codec = Codec$(dynamic, dynamic);
|
| + let Codec = Codec$(dart.dynamic, dart.dynamic);
|
| let _first = Symbol('_first');
|
| let _second = Symbol('_second');
|
| let _FusedCodec$ = dart.generic(function(S, M, T) {
|
| @@ -662,7 +391,7 @@ var convert;
|
| }
|
| return _FusedCodec;
|
| });
|
| - let _FusedCodec = _FusedCodec$(dynamic, dynamic, dynamic);
|
| + let _FusedCodec = _FusedCodec$(dart.dynamic, dart.dynamic, dart.dynamic);
|
| let _codec = Symbol('_codec');
|
| let _InvertedCodec$ = dart.generic(function(T, S) {
|
| class _InvertedCodec extends Codec$(T, S) {
|
| @@ -682,9 +411,9 @@ var convert;
|
| }
|
| return _InvertedCodec;
|
| });
|
| - let _InvertedCodec = _InvertedCodec$(dynamic, dynamic);
|
| + let _InvertedCodec = _InvertedCodec$(dart.dynamic, dart.dynamic);
|
| let Converter$ = dart.generic(function(S, T) {
|
| - class Converter extends dart.Object {
|
| + class Converter extends core.Object {
|
| Converter() {
|
| }
|
| fuse(other) {
|
| @@ -699,7 +428,7 @@ var convert;
|
| }
|
| return Converter;
|
| });
|
| - let Converter = Converter$(dynamic, dynamic);
|
| + let Converter = Converter$(dart.dynamic, dart.dynamic);
|
| let _FusedConverter$ = dart.generic(function(S, M, T) {
|
| class _FusedConverter extends Converter$(S, T) {
|
| _FusedConverter($_first, $_second) {
|
| @@ -716,7 +445,7 @@ var convert;
|
| }
|
| return _FusedConverter;
|
| });
|
| - let _FusedConverter = _FusedConverter$(dynamic, dynamic, dynamic);
|
| + let _FusedConverter = _FusedConverter$(dart.dynamic, dart.dynamic, dart.dynamic);
|
| class Encoding extends Codec$(core.String, core.List$(core.int)) {
|
| Encoding() {
|
| super.Codec();
|
| @@ -739,7 +468,7 @@ var convert;
|
| });
|
| let HTML_ESCAPE = new HtmlEscape();
|
| let _name = Symbol('_name');
|
| - class HtmlEscapeMode extends dart.Object {
|
| + class HtmlEscapeMode extends core.Object {
|
| HtmlEscapeMode$_($_name, escapeLtGt, escapeQuot, escapeApos, escapeSlash) {
|
| this[_name] = $_name;
|
| this.escapeLtGt = escapeLtGt;
|
| @@ -862,6 +591,7 @@ var convert;
|
| }
|
| }
|
| let JSON = new JsonCodec();
|
| + let _reviver = Symbol('_reviver');
|
| let _toEncodable = Symbol('_toEncodable');
|
| class JsonCodec extends Codec$(core.Object, core.String) {
|
| JsonCodec(opt$) {
|
| @@ -949,7 +679,7 @@ var convert;
|
| if (toEncodable === void 0)
|
| toEncodable = null;
|
| if (bufferSize === void 0)
|
| - bufferSize = DEFAULT_BUFFER_SIZE;
|
| + bufferSize = JsonUtf8Encoder.DEFAULT_BUFFER_SIZE;
|
| this[_indent] = _utf8Encode(indent);
|
| this[_toEncodable] = toEncodable;
|
| this[_bufferSize] = bufferSize;
|
| @@ -1101,7 +831,7 @@ var convert;
|
| let _seen = Symbol('_seen');
|
| let _checkCycle = Symbol('_checkCycle');
|
| let _removeSeen = Symbol('_removeSeen');
|
| - class _JsonStringifier extends dart.Object {
|
| + class _JsonStringifier extends core.Object {
|
| _JsonStringifier(_toEncodable) {
|
| this[_seen] = new core.List();
|
| this[_toEncodable] = dart.as(_toEncodable !== null ? _toEncodable : _defaultToEncodable, core.Function);
|
| @@ -1114,42 +844,42 @@ var convert;
|
| let length = s.length;
|
| for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
|
| let charCode = s.codeUnitAt(i);
|
| - if (dart.notNull(charCode) > dart.notNull(BACKSLASH))
|
| + if (dart.notNull(charCode) > dart.notNull(_JsonStringifier.BACKSLASH))
|
| continue;
|
| if (dart.notNull(charCode) < 32) {
|
| if (dart.notNull(i) > dart.notNull(offset))
|
| this.writeStringSlice(s, offset, i);
|
| offset = dart.notNull(i) + 1;
|
| - this.writeCharCode(BACKSLASH);
|
| + this.writeCharCode(_JsonStringifier.BACKSLASH);
|
| switch (charCode) {
|
| - case BACKSPACE:
|
| - this.writeCharCode(CHAR_b);
|
| + case _JsonStringifier.BACKSPACE:
|
| + this.writeCharCode(_JsonStringifier.CHAR_b);
|
| break;
|
| - case TAB:
|
| - this.writeCharCode(CHAR_t);
|
| + case _JsonStringifier.TAB:
|
| + this.writeCharCode(_JsonStringifier.CHAR_t);
|
| break;
|
| - case NEWLINE:
|
| - this.writeCharCode(CHAR_n);
|
| + case _JsonStringifier.NEWLINE:
|
| + this.writeCharCode(_JsonStringifier.CHAR_n);
|
| break;
|
| - case FORM_FEED:
|
| - this.writeCharCode(CHAR_f);
|
| + case _JsonStringifier.FORM_FEED:
|
| + this.writeCharCode(_JsonStringifier.CHAR_f);
|
| break;
|
| - case CARRIAGE_RETURN:
|
| - this.writeCharCode(CHAR_r);
|
| + case _JsonStringifier.CARRIAGE_RETURN:
|
| + this.writeCharCode(_JsonStringifier.CHAR_r);
|
| break;
|
| default:
|
| - this.writeCharCode(CHAR_u);
|
| - this.writeCharCode(CHAR_0);
|
| - this.writeCharCode(CHAR_0);
|
| + this.writeCharCode(_JsonStringifier.CHAR_u);
|
| + this.writeCharCode(_JsonStringifier.CHAR_0);
|
| + this.writeCharCode(_JsonStringifier.CHAR_0);
|
| this.writeCharCode(hexDigit(dart.notNull(charCode) >> 4 & 15));
|
| this.writeCharCode(hexDigit(dart.notNull(charCode) & 15));
|
| break;
|
| }
|
| - } else if (charCode === QUOTE || charCode === BACKSLASH) {
|
| + } else if (charCode === _JsonStringifier.QUOTE || charCode === _JsonStringifier.BACKSLASH) {
|
| if (dart.notNull(i) > dart.notNull(offset))
|
| this.writeStringSlice(s, offset, i);
|
| offset = dart.notNull(i) + 1;
|
| - this.writeCharCode(BACKSLASH);
|
| + this.writeCharCode(_JsonStringifier.BACKSLASH);
|
| this.writeCharCode(charCode);
|
| }
|
| }
|
| @@ -1260,7 +990,7 @@ var convert;
|
| _JsonStringifier.CHAR_t = 116;
|
| _JsonStringifier.CHAR_u = 117;
|
| let _indentLevel = Symbol('_indentLevel');
|
| - class _JsonPrettyPrintMixin extends dart.Object {
|
| + class _JsonPrettyPrintMixin extends core.Object {
|
| _JsonPrettyPrintMixin() {
|
| this[_indentLevel] = 0;
|
| }
|
| @@ -1624,12 +1354,12 @@ var convert;
|
| while (dart.notNull(pos) < dart.notNull(end)) {
|
| let skip = 0;
|
| let char = chunk.codeUnitAt(pos);
|
| - if (char === _LF) {
|
| + if (char === _LineSplitterSink._LF) {
|
| skip = 1;
|
| - } else if (char === _CR) {
|
| + } else if (char === _LineSplitterSink._CR) {
|
| skip = 1;
|
| if (dart.notNull(pos) + 1 < dart.notNull(end)) {
|
| - if (chunk.codeUnitAt(dart.notNull(pos) + 1) === _LF) {
|
| + if (chunk.codeUnitAt(dart.notNull(pos) + 1) === _LineSplitterSink._LF) {
|
| skip = 2;
|
| }
|
| } else if (!dart.notNull(isLast)) {
|
| @@ -1679,7 +1409,7 @@ var convert;
|
| }
|
| }
|
| dart.defineNamedConstructor(ClosableStringSink, 'fromStringSink');
|
| - class _ClosableStringSink extends dart.Object {
|
| + class _ClosableStringSink extends core.Object {
|
| _ClosableStringSink($_sink, $_callback) {
|
| this[_sink] = $_sink;
|
| this[_callback] = $_callback;
|
| @@ -1705,7 +1435,7 @@ var convert;
|
| }
|
| }
|
| let _flush = Symbol('_flush');
|
| - class _StringConversionSinkAsStringSinkAdapter extends dart.Object {
|
| + class _StringConversionSinkAsStringSinkAdapter extends core.Object {
|
| _StringConversionSinkAsStringSinkAdapter($_chunkedSink) {
|
| this[_chunkedSink] = $_chunkedSink;
|
| this[_buffer] = new core.StringBuffer();
|
| @@ -1717,7 +1447,7 @@ var convert;
|
| }
|
| writeCharCode(charCode) {
|
| this[_buffer].writeCharCode(charCode);
|
| - if (this[_buffer].length['>'](_MIN_STRING_SIZE))
|
| + if (this[_buffer].length['>'](_StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE))
|
| this[_flush]();
|
| }
|
| write(o) {
|
| @@ -1730,7 +1460,7 @@ var convert;
|
| if (o === void 0)
|
| o = "";
|
| this[_buffer].writeln(o);
|
| - if (this[_buffer].length['>'](_MIN_STRING_SIZE))
|
| + if (this[_buffer].length['>'](_StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE))
|
| this[_flush]();
|
| }
|
| writeAll(objects, separator) {
|
| @@ -1762,7 +1492,7 @@ var convert;
|
| _StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE = 16;
|
| class StringConversionSinkBase extends StringConversionSinkMixin {
|
| }
|
| - class StringConversionSinkMixin extends dart.Object {
|
| + class StringConversionSinkMixin extends core.Object {
|
| add(str) {
|
| return this.addSlice(str, 0, str.length, false);
|
| }
|
| @@ -1773,6 +1503,7 @@ var convert;
|
| return new _StringConversionSinkAsStringSinkAdapter(this);
|
| }
|
| }
|
| + let _stringSink = Symbol('_stringSink');
|
| class _StringSinkConversionSink extends StringConversionSinkBase {
|
| _StringSinkConversionSink($_stringSink) {
|
| this[_stringSink] = $_stringSink;
|
| @@ -1961,9 +1692,9 @@ var convert;
|
| let _createBuffer = Symbol('_createBuffer');
|
| let _writeSurrogate = Symbol('_writeSurrogate');
|
| let _fillBuffer = Symbol('_fillBuffer');
|
| - class _Utf8Encoder extends dart.Object {
|
| + class _Utf8Encoder extends core.Object {
|
| _Utf8Encoder() {
|
| - this[_Utf8Encoder$withBufferSize](dart.as(_DEFAULT_BYTE_BUFFER_SIZE, core.int));
|
| + this[_Utf8Encoder$withBufferSize](dart.as(_Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE, core.int));
|
| }
|
| _Utf8Encoder$withBufferSize(bufferSize) {
|
| this[_buffer] = _createBuffer(bufferSize);
|
| @@ -2145,7 +1876,7 @@ var convert;
|
| let _value = Symbol('_value');
|
| let _expectedUnits = Symbol('_expectedUnits');
|
| let _extraUnits = Symbol('_extraUnits');
|
| - class _Utf8Decoder extends dart.Object {
|
| + class _Utf8Decoder extends core.Object {
|
| _Utf8Decoder($_stringSink, $_allowMalformed) {
|
| this[_stringSink] = $_stringSink;
|
| this[_allowMalformed] = $_allowMalformed;
|
| @@ -2219,7 +1950,7 @@ var convert;
|
| i = dart.notNull(i) + 1;
|
| }
|
| } while (dart.notNull(expectedUnits) > 0);
|
| - if (dart.notNull(value) <= dart.notNull(_LIMITS.get(dart.notNull(extraUnits) - 1))) {
|
| + if (dart.notNull(value) <= dart.notNull(_Utf8Decoder._LIMITS.get(dart.notNull(extraUnits) - 1))) {
|
| if (!dart.notNull(this[_allowMalformed])) {
|
| throw new core.FormatException(`Overlong encoding of 0x${value.toRadixString(16)}`);
|
| }
|
| @@ -2288,6 +2019,275 @@ var convert;
|
| }
|
| }
|
| _Utf8Decoder._LIMITS = /* Unimplemented const */new List.from([_ONE_BYTE_LIMIT, _TWO_BYTE_LIMIT, _THREE_BYTE_LIMIT, _FOUR_BYTE_LIMIT]);
|
| + let _processed = Symbol('_processed');
|
| + let _original = Symbol('_original');
|
| + // Function _convertJsonToDart: (dynamic, (dynamic, dynamic) → dynamic) → dynamic
|
| + function _convertJsonToDart(json, reviver) {
|
| + dart.assert(reviver !== null);
|
| + // Function walk: (dynamic) → dynamic
|
| + function walk(e) {
|
| + if (e == null || typeof e != "object") {
|
| + return e;
|
| + }
|
| + if (Object.getPrototypeOf(e) === Array.prototype) {
|
| + for (let i = 0; dart.notNull(i) < e.length; i = dart.notNull(i) + 1) {
|
| + let item = e[i];
|
| + e[i] = reviver(i, walk(item));
|
| + }
|
| + return e;
|
| + }
|
| + let map = new _JsonMap(e);
|
| + let processed = map[_processed];
|
| + let keys = map._computeKeys();
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| + let key = keys.get(i);
|
| + let revived = reviver(key, walk(e[key]));
|
| + processed[key] = revived;
|
| + }
|
| + map[_original] = processed;
|
| + return map;
|
| + }
|
| + return reviver(null, walk(json));
|
| + }
|
| + // Function _convertJsonToDartLazy: (dynamic) → dynamic
|
| + function _convertJsonToDartLazy(object) {
|
| + if (object === null)
|
| + return null;
|
| + if (typeof object != "object") {
|
| + return object;
|
| + }
|
| + if (Object.getPrototypeOf(object) !== Array.prototype) {
|
| + return new _JsonMap(object);
|
| + }
|
| + for (let i = 0; dart.notNull(i) < object.length; i = dart.notNull(i) + 1) {
|
| + let item = object[i];
|
| + object[i] = _convertJsonToDartLazy(item);
|
| + }
|
| + return object;
|
| + }
|
| + let _data = Symbol('_data');
|
| + let _isUpgraded = Symbol('_isUpgraded');
|
| + let _upgradedMap = Symbol('_upgradedMap');
|
| + let _process = Symbol('_process');
|
| + let _computeKeys = Symbol('_computeKeys');
|
| + let _upgrade = Symbol('_upgrade');
|
| + let _hasProperty = Symbol('_hasProperty');
|
| + let _getProperty = Symbol('_getProperty');
|
| + let _setProperty = Symbol('_setProperty');
|
| + let _getPropertyNames = Symbol('_getPropertyNames');
|
| + let _isUnprocessed = Symbol('_isUnprocessed');
|
| + let _newJavaScriptObject = Symbol('_newJavaScriptObject');
|
| + class _JsonMap extends core.Object {
|
| + _JsonMap($_original) {
|
| + this[_processed] = _newJavaScriptObject();
|
| + this[_original] = $_original;
|
| + this[_data] = null;
|
| + }
|
| + get(key) {
|
| + if (this[_isUpgraded]) {
|
| + return this[_upgradedMap].get(key);
|
| + } else if (!(typeof key == string)) {
|
| + return null;
|
| + } else {
|
| + let result = _getProperty(this[_processed], dart.as(key, core.String));
|
| + if (_isUnprocessed(result))
|
| + result = this[_process](dart.as(key, core.String));
|
| + return result;
|
| + }
|
| + }
|
| + get length() {
|
| + return this[_isUpgraded] ? this[_upgradedMap].length : this[_computeKeys]().length;
|
| + }
|
| + get isEmpty() {
|
| + return this.length === 0;
|
| + }
|
| + get isNotEmpty() {
|
| + return dart.notNull(this.length) > 0;
|
| + }
|
| + get keys() {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap].keys;
|
| + return new _JsonMapKeyIterable(this);
|
| + }
|
| + get values() {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap].values;
|
| + return new _internal.MappedIterable(this[_computeKeys](), ((each) => this.get(each)).bind(this));
|
| + }
|
| + set(key, value) {
|
| + if (this[_isUpgraded]) {
|
| + this[_upgradedMap].set(key, value);
|
| + } else if (this.containsKey(key)) {
|
| + let processed = this[_processed];
|
| + _setProperty(processed, dart.as(key, core.String), value);
|
| + let original = this[_original];
|
| + if (!dart.notNull(core.identical(original, processed))) {
|
| + _setProperty(original, dart.as(key, core.String), null);
|
| + }
|
| + } else {
|
| + this[_upgrade]().set(key, value);
|
| + }
|
| + }
|
| + addAll(other) {
|
| + other.forEach(((key, value) => {
|
| + this.set(key, value);
|
| + }).bind(this));
|
| + }
|
| + containsValue(value) {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap].containsValue(value);
|
| + let keys = this[_computeKeys]();
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| + let key = keys.get(i);
|
| + if (dart.equals(this.get(key), value))
|
| + return true;
|
| + }
|
| + return false;
|
| + }
|
| + containsKey(key) {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap].containsKey(key);
|
| + if (!(typeof key == string))
|
| + return false;
|
| + return _hasProperty(this[_original], dart.as(key, core.String));
|
| + }
|
| + putIfAbsent(key, ifAbsent) {
|
| + if (this.containsKey(key))
|
| + return this.get(key);
|
| + let value = ifAbsent();
|
| + this.set(key, value);
|
| + return value;
|
| + }
|
| + remove(key) {
|
| + if (!dart.notNull(this[_isUpgraded]) && !dart.notNull(this.containsKey(key)))
|
| + return null;
|
| + return this[_upgrade]().remove(key);
|
| + }
|
| + clear() {
|
| + if (this[_isUpgraded]) {
|
| + this[_upgradedMap].clear();
|
| + } else {
|
| + if (this[_data] !== null) {
|
| + dart.dinvoke(this[_data], 'clear');
|
| + }
|
| + this[_original] = this[_processed] = null;
|
| + this[_data] = dart.map();
|
| + }
|
| + }
|
| + forEach(f) {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap].forEach(f);
|
| + let keys = this[_computeKeys]();
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| + let key = keys.get(i);
|
| + let value = _getProperty(this[_processed], key);
|
| + if (_isUnprocessed(value)) {
|
| + value = _convertJsonToDartLazy(_getProperty(this[_original], key));
|
| + _setProperty(this[_processed], key, value);
|
| + }
|
| + f(key, value);
|
| + if (!dart.notNull(core.identical(keys, this[_data]))) {
|
| + throw new core.ConcurrentModificationError(this);
|
| + }
|
| + }
|
| + }
|
| + toString() {
|
| + return collection.Maps.mapToString(this);
|
| + }
|
| + get [_isUpgraded]() {
|
| + return this[_processed] === null;
|
| + }
|
| + get [_upgradedMap]() {
|
| + dart.assert(this[_isUpgraded]);
|
| + return dart.as(this[_data], core.Map);
|
| + }
|
| + [_computeKeys]() {
|
| + dart.assert(!dart.notNull(this[_isUpgraded]));
|
| + let keys = dart.as(this[_data], core.List);
|
| + if (keys === null) {
|
| + keys = this[_data] = _getPropertyNames(this[_original]);
|
| + }
|
| + return dart.as(keys, core.List$(core.String));
|
| + }
|
| + [_upgrade]() {
|
| + if (this[_isUpgraded])
|
| + return this[_upgradedMap];
|
| + let result = dart.map();
|
| + let keys = this[_computeKeys]();
|
| + for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
|
| + let key = keys.get(i);
|
| + result.set(key, this.get(key));
|
| + }
|
| + if (keys.isEmpty) {
|
| + keys.add(null);
|
| + } else {
|
| + keys.clear();
|
| + }
|
| + this[_original] = this[_processed] = null;
|
| + this[_data] = result;
|
| + dart.assert(this[_isUpgraded]);
|
| + return result;
|
| + }
|
| + [_process](key) {
|
| + if (!dart.notNull(_hasProperty(this[_original], key)))
|
| + return null;
|
| + let result = _convertJsonToDartLazy(_getProperty(this[_original], key));
|
| + return _setProperty(this[_processed], key, result);
|
| + }
|
| + static [_hasProperty](object, key) {
|
| + return Object.prototype.hasOwnProperty.call(object, key);
|
| + }
|
| + static [_getProperty](object, key) {
|
| + return object[key];
|
| + }
|
| + static [_setProperty](object, key, value) {
|
| + return object[key] = value;
|
| + }
|
| + static [_getPropertyNames](object) {
|
| + return dart.as(Object.keys(object), core.List);
|
| + }
|
| + static [_isUnprocessed](object) {
|
| + return typeof object == "undefined";
|
| + }
|
| + static [_newJavaScriptObject]() {
|
| + return Object.create(null);
|
| + }
|
| + }
|
| + let _parent = Symbol('_parent');
|
| + class _JsonMapKeyIterable extends _internal.ListIterable {
|
| + _JsonMapKeyIterable($_parent) {
|
| + this[_parent] = $_parent;
|
| + super.ListIterable();
|
| + }
|
| + get length() {
|
| + return this[_parent].length;
|
| + }
|
| + elementAt(index) {
|
| + return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys.elementAt(index) : this[_parent]._computeKeys().get(index), core.String);
|
| + }
|
| + get iterator() {
|
| + return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys.iterator : this[_parent]._computeKeys().iterator, core.Iterator);
|
| + }
|
| + contains(key) {
|
| + return this[_parent].containsKey(key);
|
| + }
|
| + }
|
| + class _JsonDecoderSink extends _StringSinkConversionSink {
|
| + _JsonDecoderSink($_reviver, $_sink) {
|
| + this[_reviver] = $_reviver;
|
| + this[_sink] = $_sink;
|
| + super._StringSinkConversionSink(new core.StringBuffer());
|
| + }
|
| + close() {
|
| + super.close();
|
| + let buffer = dart.as(this[_stringSink], core.StringBuffer);
|
| + let accumulated = buffer.toString();
|
| + buffer.clear();
|
| + let decoded = _parseJson(accumulated, this[_reviver]);
|
| + this[_sink].add(decoded);
|
| + this[_sink].close();
|
| + }
|
| + }
|
| // Exports:
|
| exports.ASCII = ASCII;
|
| exports.AsciiCodec = AsciiCodec;
|
|
|