Index: test/codegen/expect/dart/convert.js |
diff --git a/test/codegen/expect/dart/convert.js b/test/codegen/expect/dart/convert.js |
deleted file mode 100644 |
index b0d957ba8927f9f06244a454d0b3552bbdd39890..0000000000000000000000000000000000000000 |
--- a/test/codegen/expect/dart/convert.js |
+++ /dev/null |
@@ -1,2330 +0,0 @@ |
-var convert; |
-(function(exports) { |
- 'use strict'; |
- let ASCII = new AsciiCodec(); |
- let _ASCII_MASK = 127; |
- let _allowInvalid = Symbol('_allowInvalid'); |
- let Codec$ = dart.generic(function(S, T) { |
- class Codec extends core.Object { |
- Codec() { |
- } |
- encode(input) { |
- return this.encoder.convert(input); |
- } |
- decode(encoded) { |
- return this.decoder.convert(encoded); |
- } |
- fuse(other) { |
- return new _FusedCodec(this, other); |
- } |
- get inverted() { |
- return new _InvertedCodec(this); |
- } |
- } |
- return Codec; |
- }); |
- let Codec = Codec$(dart.dynamic, dart.dynamic); |
- class Encoding extends Codec$(core.String, core.List$(core.int)) { |
- Encoding() { |
- super.Codec(); |
- } |
- decodeStream(byteStream) { |
- return dart.as(byteStream.transform(dart.as(this.decoder, async.StreamTransformer$(core.List$(core.int), dynamic))).fold(new core.StringBuffer(), (buffer, string) => dart.dinvoke(buffer, 'write', string), buffer).then((buffer) => dart.dinvoke(buffer, 'toString')), async.Future$(core.String)); |
- } |
- static getByName(name) { |
- if (name === null) |
- return null; |
- name = name.toLowerCase(); |
- return _nameToEncoding.get(name); |
- } |
- } |
- dart.defineLazyProperties(Encoding, { |
- get _nameToEncoding() { |
- return dart.map({"iso_8859-1:1987": LATIN1, "iso-ir-100": LATIN1, "iso_8859-1": LATIN1, "iso-8859-1": LATIN1, latin1: LATIN1, l1: LATIN1, ibm819: LATIN1, cp819: LATIN1, csisolatin1: LATIN1, "iso-ir-6": ASCII, "ansi_x3.4-1968": ASCII, "ansi_x3.4-1986": ASCII, "iso_646.irv:1991": ASCII, "iso646-us": ASCII, "us-ascii": ASCII, us: ASCII, ibm367: ASCII, cp367: ASCII, csascii: ASCII, ascii: ASCII, csutf8: UTF8, "utf-8": UTF8}); |
- }, |
- set _nameToEncoding(_) {} |
- }); |
- 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"; |
- } |
- 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); |
- } |
- } |
- get encoder() { |
- return new AsciiEncoder(); |
- } |
- get decoder() { |
- return this[_allowInvalid] ? new AsciiDecoder({allowInvalid: true}) : new AsciiDecoder({allowInvalid: false}); |
- } |
- } |
- let _subsetMask = Symbol('_subsetMask'); |
- let Converter$ = dart.generic(function(S, T) { |
- class Converter extends core.Object { |
- Converter() { |
- } |
- fuse(other) { |
- return new _FusedConverter(this, other); |
- } |
- startChunkedConversion(sink) { |
- throw new core.UnsupportedError(`This converter does not support chunked conversions: ${this}`); |
- } |
- bind(source) { |
- return new async.Stream.eventTransformed(source, ((sink) => new _ConverterStreamEventSink(this, sink)).bind(this)); |
- } |
- } |
- return Converter; |
- }); |
- let Converter = Converter$(dart.dynamic, dart.dynamic); |
- 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); |
- } |
- 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); |
- } |
- } |
- let _sink = Symbol('_sink'); |
- class StringConversionSinkMixin extends core.Object { |
- add(str) { |
- return this.addSlice(str, 0, str.length, false); |
- } |
- asUtf8Sink(allowMalformed) { |
- return new _Utf8ConversionSink(this, allowMalformed); |
- } |
- asStringSink() { |
- return new _StringConversionSinkAsStringSinkAdapter(this); |
- } |
- } |
- class StringConversionSinkBase extends StringConversionSinkMixin { |
- } |
- 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'); |
- let ChunkedConversionSink$ = dart.generic(function(T) { |
- class ChunkedConversionSink extends core.Object { |
- ChunkedConversionSink() { |
- } |
- ChunkedConversionSink$withCallback(callback) { |
- return new _SimpleCallbackSink(callback); |
- } |
- } |
- dart.defineNamedConstructor(ChunkedConversionSink, 'withCallback'); |
- return ChunkedConversionSink; |
- }); |
- let ChunkedConversionSink = ChunkedConversionSink$(dart.dynamic); |
- 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 _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 _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(_ByteCallbackSink._INITIAL_BUFFER_SIZE); |
- 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 _accumulated = Symbol('_accumulated'); |
- let _SimpleCallbackSink$ = dart.generic(function(T) { |
- class _SimpleCallbackSink extends ChunkedConversionSink$(T) { |
- _SimpleCallbackSink($_callback) { |
- this[_accumulated] = new List.from([]); |
- this[_callback] = $_callback; |
- super.ChunkedConversionSink(); |
- } |
- add(chunk) { |
- this[_accumulated].add(chunk); |
- } |
- close() { |
- this[_callback](this[_accumulated]); |
- } |
- } |
- return _SimpleCallbackSink; |
- }); |
- let _SimpleCallbackSink = _SimpleCallbackSink$(dart.dynamic); |
- let _EventSinkAdapter$ = dart.generic(function(T) { |
- class _EventSinkAdapter extends core.Object { |
- _EventSinkAdapter($_sink) { |
- this[_sink] = $_sink; |
- } |
- add(data) { |
- return this[_sink].add(data); |
- } |
- close() { |
- return this[_sink].close(); |
- } |
- } |
- return _EventSinkAdapter; |
- }); |
- let _EventSinkAdapter = _EventSinkAdapter$(dart.dynamic); |
- let _eventSink = Symbol('_eventSink'); |
- let _chunkedSink = Symbol('_chunkedSink'); |
- let _ConverterStreamEventSink$ = dart.generic(function(S, T) { |
- class _ConverterStreamEventSink extends core.Object { |
- _ConverterStreamEventSink(converter, sink) { |
- this[_eventSink] = sink; |
- this[_chunkedSink] = converter.startChunkedConversion(sink); |
- } |
- add(o) { |
- return this[_chunkedSink].add(o); |
- } |
- addError(error, stackTrace) { |
- if (stackTrace === void 0) |
- stackTrace = null; |
- this[_eventSink].addError(error, stackTrace); |
- } |
- close() { |
- return this[_chunkedSink].close(); |
- } |
- } |
- return _ConverterStreamEventSink; |
- }); |
- let _ConverterStreamEventSink = _ConverterStreamEventSink$(dart.dynamic, dart.dynamic); |
- let _first = Symbol('_first'); |
- let _second = Symbol('_second'); |
- let _FusedCodec$ = dart.generic(function(S, M, T) { |
- class _FusedCodec extends Codec$(S, T) { |
- get encoder() { |
- return dart.as(this[_first].encoder.fuse(this[_second].encoder), Converter$(S, T)); |
- } |
- get decoder() { |
- return dart.as(this[_second].decoder.fuse(this[_first].decoder), Converter$(T, S)); |
- } |
- _FusedCodec($_first, $_second) { |
- this[_first] = $_first; |
- this[_second] = $_second; |
- super.Codec(); |
- } |
- } |
- return _FusedCodec; |
- }); |
- 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) { |
- _InvertedCodec(codec) { |
- this[_codec] = codec; |
- super.Codec(); |
- } |
- get encoder() { |
- return this[_codec].decoder; |
- } |
- get decoder() { |
- return this[_codec].encoder; |
- } |
- get inverted() { |
- return this[_codec]; |
- } |
- } |
- return _InvertedCodec; |
- }); |
- let _InvertedCodec = _InvertedCodec$(dart.dynamic, dart.dynamic); |
- let _FusedConverter$ = dart.generic(function(S, M, T) { |
- class _FusedConverter extends Converter$(S, T) { |
- _FusedConverter($_first, $_second) { |
- this[_first] = $_first; |
- this[_second] = $_second; |
- super.Converter(); |
- } |
- convert(input) { |
- return dart.as(this[_second].convert(this[_first].convert(input)), T); |
- } |
- startChunkedConversion(sink) { |
- return this[_first].startChunkedConversion(this[_second].startChunkedConversion(sink)); |
- } |
- } |
- return _FusedConverter; |
- }); |
- let _FusedConverter = _FusedConverter$(dart.dynamic, dart.dynamic, dart.dynamic); |
- let HTML_ESCAPE = new HtmlEscape(); |
- let _name = Symbol('_name'); |
- class HtmlEscapeMode extends core.Object { |
- HtmlEscapeMode$_($_name, escapeLtGt, escapeQuot, escapeApos, escapeSlash) { |
- this[_name] = $_name; |
- this.escapeLtGt = escapeLtGt; |
- this.escapeQuot = escapeQuot; |
- this.escapeApos = escapeApos; |
- this.escapeSlash = escapeSlash; |
- } |
- toString() { |
- return this[_name]; |
- } |
- } |
- dart.defineNamedConstructor(HtmlEscapeMode, '_'); |
- HtmlEscapeMode.UNKNOWN = new HtmlEscapeMode._('unknown', true, true, true, true); |
- HtmlEscapeMode.ATTRIBUTE = new HtmlEscapeMode._('attribute', false, true, false, false); |
- HtmlEscapeMode.ELEMENT = new HtmlEscapeMode._('element', true, false, false, true); |
- let _convert = Symbol('_convert'); |
- class HtmlEscape extends Converter$(core.String, core.String) { |
- HtmlEscape(mode) { |
- if (mode === void 0) |
- mode = HtmlEscapeMode.UNKNOWN; |
- this.mode = mode; |
- super.Converter(); |
- } |
- convert(text) { |
- let val = this[_convert](text, 0, text.length); |
- return val === null ? text : val; |
- } |
- [_convert](text, start, end) { |
- let result = null; |
- for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { |
- let ch = text.get(i); |
- let replace = null; |
- switch (ch) { |
- case '&': |
- replace = '&'; |
- break; |
- case ' ': |
- replace = ' '; |
- break; |
- case '"': |
- if (this.mode.escapeQuot) |
- replace = '"'; |
- break; |
- case "'": |
- if (this.mode.escapeApos) |
- replace = '''; |
- break; |
- case '<': |
- if (this.mode.escapeLtGt) |
- replace = '<'; |
- break; |
- case '>': |
- if (this.mode.escapeLtGt) |
- replace = '>'; |
- break; |
- case '/': |
- if (this.mode.escapeSlash) |
- replace = '/'; |
- break; |
- } |
- if (replace !== null) { |
- if (result === null) |
- result = new core.StringBuffer(text.substring(start, i)); |
- result.write(replace); |
- } else if (result !== null) { |
- result.write(ch); |
- } |
- } |
- return result !== null ? result.toString() : null; |
- } |
- startChunkedConversion(sink) { |
- if (!dart.is(sink, StringConversionSink)) { |
- sink = new StringConversionSink.from(sink); |
- } |
- return new _HtmlEscapeSink(this, dart.as(sink, StringConversionSink)); |
- } |
- } |
- let _escape = Symbol('_escape'); |
- class _HtmlEscapeSink extends StringConversionSinkBase { |
- _HtmlEscapeSink($_escape, $_sink) { |
- this[_escape] = $_escape; |
- this[_sink] = $_sink; |
- super.StringConversionSinkBase(); |
- } |
- addSlice(chunk, start, end, isLast) { |
- let val = this[_escape]._convert(chunk, start, end); |
- if (val === null) { |
- this[_sink].addSlice(chunk, start, end, isLast); |
- } else { |
- this[_sink].add(val); |
- if (isLast) |
- this[_sink].close(); |
- } |
- } |
- close() { |
- return this[_sink].close(); |
- } |
- } |
- class JsonUnsupportedObjectError extends core.Error { |
- JsonUnsupportedObjectError(unsupportedObject, opt$) { |
- let cause = opt$.cause === void 0 ? null : opt$.cause; |
- this.unsupportedObject = unsupportedObject; |
- this.cause = cause; |
- super.Error(); |
- } |
- toString() { |
- if (this.cause !== null) { |
- return "Converting object to an encodable object failed."; |
- } else { |
- return "Converting object did not return an encodable object."; |
- } |
- } |
- } |
- class JsonCyclicError extends JsonUnsupportedObjectError { |
- JsonCyclicError(object) { |
- super.JsonUnsupportedObjectError(object); |
- } |
- toString() { |
- return "Cyclic error in JSON stringify"; |
- } |
- } |
- let JSON = new JsonCodec(); |
- let _reviver = Symbol('_reviver'); |
- let _toEncodable = Symbol('_toEncodable'); |
- class JsonCodec extends Codec$(core.Object, core.String) { |
- JsonCodec(opt$) { |
- let reviver = opt$.reviver === void 0 ? null : opt$.reviver; |
- let toEncodable = opt$.toEncodable === void 0 ? null : opt$.toEncodable; |
- this[_reviver] = reviver; |
- this[_toEncodable] = toEncodable; |
- super.Codec(); |
- } |
- JsonCodec$withReviver(reviver) { |
- this.JsonCodec({reviver: reviver}); |
- } |
- decode(source, opt$) { |
- let reviver = opt$.reviver === void 0 ? null : opt$.reviver; |
- if (reviver === null) |
- reviver = this[_reviver]; |
- if (reviver === null) |
- return this.decoder.convert(source); |
- return new JsonDecoder(reviver).convert(source); |
- } |
- encode(value, opt$) { |
- let toEncodable = opt$.toEncodable === void 0 ? null : opt$.toEncodable; |
- if (toEncodable === null) |
- toEncodable = this[_toEncodable]; |
- if (toEncodable === null) |
- return this.encoder.convert(value); |
- return new JsonEncoder(dart.closureWrap(toEncodable, "(Object) → Object")).convert(value); |
- } |
- get encoder() { |
- if (this[_toEncodable] === null) |
- return new JsonEncoder(); |
- return new JsonEncoder(dart.closureWrap(this[_toEncodable], "(Object) → Object")); |
- } |
- get decoder() { |
- if (this[_reviver] === null) |
- return new JsonDecoder(); |
- return new JsonDecoder(this[_reviver]); |
- } |
- } |
- dart.defineNamedConstructor(JsonCodec, 'withReviver'); |
- class JsonEncoder extends Converter$(core.Object, core.String) { |
- JsonEncoder(toEncodable) { |
- if (toEncodable === void 0) |
- toEncodable = null; |
- this.indent = null; |
- this[_toEncodable] = toEncodable; |
- super.Converter(); |
- } |
- JsonEncoder$withIndent(indent, toEncodable) { |
- if (toEncodable === void 0) |
- toEncodable = null; |
- this.indent = indent; |
- this[_toEncodable] = toEncodable; |
- super.Converter(); |
- } |
- convert(object) { |
- return _JsonStringStringifier.stringify(object, dart.as(this[_toEncodable], dart.throw_("Unimplemented type (dynamic) → dynamic")), this.indent); |
- } |
- startChunkedConversion(sink) { |
- if (!dart.is(sink, StringConversionSink)) { |
- sink = new StringConversionSink.from(sink); |
- } else if (dart.is(sink, _Utf8EncoderSink)) { |
- return new _JsonUtf8EncoderSink(sink[_sink], this[_toEncodable], JsonUtf8Encoder._utf8Encode(this.indent), JsonUtf8Encoder.DEFAULT_BUFFER_SIZE); |
- } |
- return new _JsonEncoderSink(dart.as(sink, StringConversionSink), this[_toEncodable], this.indent); |
- } |
- bind(stream) { |
- return dart.as(super.bind(stream), async.Stream$(core.String)); |
- } |
- fuse(other) { |
- if (dart.is(other, Utf8Encoder)) { |
- return new JsonUtf8Encoder(this.indent, dart.as(this[_toEncodable], dart.throw_("Unimplemented type (Object) → dynamic"))); |
- } |
- return super.fuse(other); |
- } |
- } |
- dart.defineNamedConstructor(JsonEncoder, 'withIndent'); |
- let _indent = Symbol('_indent'); |
- let _bufferSize = Symbol('_bufferSize'); |
- let _utf8Encode = Symbol('_utf8Encode'); |
- class JsonUtf8Encoder extends Converter$(core.Object, core.List$(core.int)) { |
- JsonUtf8Encoder(indent, toEncodable, bufferSize) { |
- if (indent === void 0) |
- indent = null; |
- if (toEncodable === void 0) |
- toEncodable = null; |
- if (bufferSize === void 0) |
- bufferSize = JsonUtf8Encoder.DEFAULT_BUFFER_SIZE; |
- this[_indent] = _utf8Encode(indent); |
- this[_toEncodable] = toEncodable; |
- this[_bufferSize] = bufferSize; |
- super.Converter(); |
- } |
- static [_utf8Encode](string) { |
- if (string === null) |
- return null; |
- if (string.isEmpty) |
- return new typed_data.Uint8List(0); |
- checkAscii: { |
- for (let i = 0; dart.notNull(i) < dart.notNull(string.length); i = dart.notNull(i) + 1) { |
- if (dart.notNull(string.codeUnitAt(i)) >= 128) |
- break checkAscii; |
- } |
- return string.codeUnits; |
- } |
- return UTF8.encode(string); |
- } |
- convert(object) { |
- let bytes = dart.as(new List.from([]), core.List$(core.List$(core.int))); |
- // Function addChunk: (Uint8List, int, int) → void |
- function addChunk(chunk, start, end) { |
- if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(chunk.length)) { |
- let length = dart.notNull(end) - dart.notNull(start); |
- chunk = new typed_data.Uint8List.view(chunk.buffer, dart.notNull(chunk.offsetInBytes) + dart.notNull(start), length); |
- } |
- bytes.add(chunk); |
- } |
- _JsonUtf8Stringifier.stringify(object, this[_indent], dart.as(this[_toEncodable], dart.throw_("Unimplemented type (Object) → dynamic")), this[_bufferSize], addChunk); |
- if (bytes.length === 1) |
- return bytes.get(0); |
- let length = 0; |
- for (let i = 0; dart.notNull(i) < dart.notNull(bytes.length); i = dart.notNull(i) + 1) { |
- length = bytes.get(i).length; |
- } |
- let result = new typed_data.Uint8List(length); |
- for (let i = 0, offset = 0; dart.notNull(i) < dart.notNull(bytes.length); i = dart.notNull(i) + 1) { |
- let byteList = bytes.get(i); |
- let end = dart.notNull(offset) + dart.notNull(byteList.length); |
- result.setRange(offset, end, byteList); |
- offset = end; |
- } |
- return result; |
- } |
- startChunkedConversion(sink) { |
- let byteSink = null; |
- if (dart.is(sink, ByteConversionSink)) { |
- byteSink = sink; |
- } else { |
- byteSink = new ByteConversionSink.from(sink); |
- } |
- return new _JsonUtf8EncoderSink(byteSink, this[_toEncodable], this[_indent], this[_bufferSize]); |
- } |
- bind(stream) { |
- return dart.as(super.bind(stream), async.Stream$(core.List$(core.int))); |
- } |
- fuse(other) { |
- return super.fuse(other); |
- } |
- } |
- JsonUtf8Encoder.DEFAULT_BUFFER_SIZE = 256; |
- let _isDone = Symbol('_isDone'); |
- class _JsonEncoderSink extends ChunkedConversionSink$(core.Object) { |
- _JsonEncoderSink($_sink, $_toEncodable, $_indent) { |
- this[_sink] = $_sink; |
- this[_toEncodable] = $_toEncodable; |
- this[_indent] = $_indent; |
- this[_isDone] = false; |
- super.ChunkedConversionSink(); |
- } |
- add(o) { |
- if (this[_isDone]) { |
- throw new core.StateError("Only one call to add allowed"); |
- } |
- this[_isDone] = true; |
- let stringSink = this[_sink].asStringSink(); |
- _JsonStringStringifier.printOn(o, stringSink, dart.as(this[_toEncodable], dart.throw_("Unimplemented type (dynamic) → dynamic")), this[_indent]); |
- stringSink.close(); |
- } |
- close() {} |
- } |
- let _addChunk = Symbol('_addChunk'); |
- class _JsonUtf8EncoderSink extends ChunkedConversionSink$(core.Object) { |
- _JsonUtf8EncoderSink($_sink, $_toEncodable, $_indent, $_bufferSize) { |
- this[_sink] = $_sink; |
- this[_toEncodable] = $_toEncodable; |
- this[_indent] = $_indent; |
- this[_bufferSize] = $_bufferSize; |
- this[_isDone] = false; |
- super.ChunkedConversionSink(); |
- } |
- [_addChunk](chunk, start, end) { |
- this[_sink].addSlice(chunk, start, end, false); |
- } |
- add(object) { |
- if (this[_isDone]) { |
- throw new core.StateError("Only one call to add allowed"); |
- } |
- this[_isDone] = true; |
- _JsonUtf8Stringifier.stringify(object, this[_indent], dart.as(this[_toEncodable], dart.throw_("Unimplemented type (Object) → dynamic")), this[_bufferSize], this[_addChunk]); |
- this[_sink].close(); |
- } |
- close() { |
- if (!dart.notNull(this[_isDone])) { |
- this[_isDone] = true; |
- this[_sink].close(); |
- } |
- } |
- } |
- class JsonDecoder extends Converter$(core.String, core.Object) { |
- JsonDecoder(reviver) { |
- if (reviver === void 0) |
- reviver = null; |
- this[_reviver] = reviver; |
- super.Converter(); |
- } |
- convert(input) { |
- return _parseJson(input, this[_reviver]); |
- } |
- startChunkedConversion(sink) { |
- return new _JsonDecoderSink(this[_reviver], sink); |
- } |
- bind(stream) { |
- return dart.as(super.bind(stream), async.Stream$(core.Object)); |
- } |
- } |
- // Function _parseJson: (String, (dynamic, dynamic) → dynamic) → dynamic |
- function _parseJson(source, reviver) { |
- if (!(typeof source == string)) |
- throw new core.ArgumentError(source); |
- let parsed = null; |
- try { |
- parsed = JSON.parse(source); |
- } catch (e) { |
- throw new core.FormatException(String(e)); |
- } |
- |
- if (reviver === null) { |
- return _convertJsonToDartLazy(parsed); |
- } else { |
- return _convertJsonToDart(parsed, reviver); |
- } |
- } |
- // Function _defaultToEncodable: (dynamic) → Object |
- function _defaultToEncodable(object) { |
- return dart.dinvoke(object, 'toJson'); |
- } |
- let _seen = Symbol('_seen'); |
- let _checkCycle = Symbol('_checkCycle'); |
- let _removeSeen = Symbol('_removeSeen'); |
- class _JsonStringifier extends core.Object { |
- _JsonStringifier(_toEncodable) { |
- this[_seen] = new core.List(); |
- this[_toEncodable] = dart.as(_toEncodable !== null ? _toEncodable : _defaultToEncodable, core.Function); |
- } |
- static hexDigit(x) { |
- return dart.notNull(x) < 10 ? 48 + dart.notNull(x) : 87 + dart.notNull(x); |
- } |
- writeStringContent(s) { |
- let offset = 0; |
- 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(_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(_JsonStringifier.BACKSLASH); |
- switch (charCode) { |
- case _JsonStringifier.BACKSPACE: |
- this.writeCharCode(_JsonStringifier.CHAR_b); |
- break; |
- case _JsonStringifier.TAB: |
- this.writeCharCode(_JsonStringifier.CHAR_t); |
- break; |
- case _JsonStringifier.NEWLINE: |
- this.writeCharCode(_JsonStringifier.CHAR_n); |
- break; |
- case _JsonStringifier.FORM_FEED: |
- this.writeCharCode(_JsonStringifier.CHAR_f); |
- break; |
- case _JsonStringifier.CARRIAGE_RETURN: |
- this.writeCharCode(_JsonStringifier.CHAR_r); |
- break; |
- default: |
- 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 === _JsonStringifier.QUOTE || charCode === _JsonStringifier.BACKSLASH) { |
- if (dart.notNull(i) > dart.notNull(offset)) |
- this.writeStringSlice(s, offset, i); |
- offset = dart.notNull(i) + 1; |
- this.writeCharCode(_JsonStringifier.BACKSLASH); |
- this.writeCharCode(charCode); |
- } |
- } |
- if (offset === 0) { |
- this.writeString(s); |
- } else if (dart.notNull(offset) < dart.notNull(length)) { |
- this.writeStringSlice(s, offset, length); |
- } |
- } |
- [_checkCycle](object) { |
- for (let i = 0; dart.notNull(i) < dart.notNull(this[_seen].length); i = dart.notNull(i) + 1) { |
- if (core.identical(object, this[_seen].get(i))) { |
- throw new JsonCyclicError(object); |
- } |
- } |
- this[_seen].add(object); |
- } |
- [_removeSeen](object) { |
- dart.assert(!dart.notNull(this[_seen].isEmpty)); |
- dart.assert(core.identical(this[_seen].last, object)); |
- this[_seen].removeLast(); |
- } |
- writeObject(object) { |
- if (this.writeJsonValue(object)) |
- return; |
- this[_checkCycle](object); |
- try { |
- let customJson = dart.dinvokef(this[_toEncodable], object); |
- if (!dart.notNull(this.writeJsonValue(customJson))) { |
- throw new JsonUnsupportedObjectError(object); |
- } |
- this[_removeSeen](object); |
- } catch (e) { |
- throw new JsonUnsupportedObjectError(object, {cause: e}); |
- } |
- |
- } |
- writeJsonValue(object) { |
- if (dart.is(object, core.num)) { |
- if (dart.dunary('!', dart.dload(object, 'isFinite'))) |
- return false; |
- this.writeNumber(dart.as(object, core.num)); |
- return true; |
- } else if (core.identical(object, true)) { |
- this.writeString('true'); |
- return true; |
- } else if (core.identical(object, false)) { |
- this.writeString('false'); |
- return true; |
- } else if (object === null) { |
- this.writeString('null'); |
- return true; |
- } else if (typeof object == string) { |
- this.writeString('"'); |
- this.writeStringContent(dart.as(object, core.String)); |
- this.writeString('"'); |
- return true; |
- } else if (dart.is(object, core.List)) { |
- this[_checkCycle](object); |
- this.writeList(dart.as(object, core.List)); |
- this[_removeSeen](object); |
- return true; |
- } else if (dart.is(object, core.Map)) { |
- this[_checkCycle](object); |
- this.writeMap(dart.as(object, core.Map$(core.String, core.Object))); |
- this[_removeSeen](object); |
- return true; |
- } else { |
- return false; |
- } |
- } |
- writeList(list) { |
- this.writeString('['); |
- if (dart.notNull(list.length) > 0) { |
- this.writeObject(list.get(0)); |
- for (let i = 1; dart.notNull(i) < dart.notNull(list.length); i = dart.notNull(i) + 1) { |
- this.writeString(','); |
- this.writeObject(list.get(i)); |
- } |
- } |
- this.writeString(']'); |
- } |
- writeMap(map) { |
- this.writeString('{'); |
- let separator = '"'; |
- map.forEach(dart.closureWrap(((key, value) => { |
- this.writeString(separator); |
- separator = ',"'; |
- this.writeStringContent(key); |
- this.writeString('":'); |
- this.writeObject(value); |
- }).bind(this), "(String, Object) → void")); |
- this.writeString('}'); |
- } |
- } |
- _JsonStringifier.BACKSPACE = 8; |
- _JsonStringifier.TAB = 9; |
- _JsonStringifier.NEWLINE = 10; |
- _JsonStringifier.CARRIAGE_RETURN = 13; |
- _JsonStringifier.FORM_FEED = 12; |
- _JsonStringifier.QUOTE = 34; |
- _JsonStringifier.CHAR_0 = 48; |
- _JsonStringifier.BACKSLASH = 92; |
- _JsonStringifier.CHAR_b = 98; |
- _JsonStringifier.CHAR_f = 102; |
- _JsonStringifier.CHAR_n = 110; |
- _JsonStringifier.CHAR_r = 114; |
- _JsonStringifier.CHAR_t = 116; |
- _JsonStringifier.CHAR_u = 117; |
- let _indentLevel = Symbol('_indentLevel'); |
- class _JsonPrettyPrintMixin extends core.Object { |
- _JsonPrettyPrintMixin() { |
- this[_indentLevel] = 0; |
- } |
- writeList(list) { |
- if (list.isEmpty) { |
- this.writeString('[]'); |
- } else { |
- this.writeString('[\n'); |
- this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1; |
- this.writeIndentation(this[_indentLevel]); |
- this.writeObject(list.get(0)); |
- for (let i = 1; dart.notNull(i) < dart.notNull(list.length); i = dart.notNull(i) + 1) { |
- this.writeString(',\n'); |
- this.writeIndentation(this[_indentLevel]); |
- this.writeObject(list.get(i)); |
- } |
- this.writeString('\n'); |
- this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1; |
- this.writeIndentation(this[_indentLevel]); |
- this.writeString(']'); |
- } |
- } |
- writeMap(map) { |
- if (map.isEmpty) { |
- this.writeString('{}'); |
- } else { |
- this.writeString('{\n'); |
- this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1; |
- let first = true; |
- map.forEach(((key, value) => { |
- if (!dart.notNull(first)) { |
- this.writeString(",\n"); |
- } |
- this.writeIndentation(this[_indentLevel]); |
- this.writeString('"'); |
- this.writeStringContent(key); |
- this.writeString('": '); |
- this.writeObject(value); |
- first = false; |
- }).bind(this)); |
- this.writeString('\n'); |
- this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1; |
- this.writeIndentation(this[_indentLevel]); |
- this.writeString('}'); |
- } |
- } |
- } |
- class _JsonStringStringifier extends _JsonStringifier { |
- _JsonStringStringifier($_sink, _toEncodable) { |
- this[_sink] = $_sink; |
- super._JsonStringifier(dart.as(_toEncodable, dart.throw_("Unimplemented type (Object) → Object"))); |
- } |
- static stringify(object, toEncodable, indent) { |
- let output = new core.StringBuffer(); |
- printOn(object, output, toEncodable, indent); |
- return output.toString(); |
- } |
- static printOn(object, output, toEncodable, indent) { |
- let stringifier = null; |
- if (indent === null) { |
- stringifier = new _JsonStringStringifier(output, toEncodable); |
- } else { |
- stringifier = new _JsonStringStringifierPretty(output, toEncodable, indent); |
- } |
- dart.dinvoke(stringifier, 'writeObject', object); |
- } |
- writeNumber(number) { |
- this[_sink].write(number.toString()); |
- } |
- writeString(string) { |
- this[_sink].write(string); |
- } |
- writeStringSlice(string, start, end) { |
- this[_sink].write(string.substring(start, end)); |
- } |
- writeCharCode(charCode) { |
- this[_sink].writeCharCode(charCode); |
- } |
- } |
- class _JsonStringStringifierPretty extends dart.mixin(_JsonStringStringifier, _JsonPrettyPrintMixin) { |
- _JsonStringStringifierPretty(sink, toEncodable, $_indent) { |
- this[_indent] = $_indent; |
- super._JsonStringStringifier(sink, toEncodable); |
- } |
- writeIndentation(count) { |
- for (let i = 0; dart.notNull(i) < dart.notNull(count); i = dart.notNull(i) + 1) |
- this.writeString(this[_indent]); |
- } |
- } |
- class _JsonUtf8Stringifier extends _JsonStringifier { |
- _JsonUtf8Stringifier(toEncodable, bufferSize, addChunk) { |
- this.addChunk = addChunk; |
- this.bufferSize = bufferSize; |
- this.buffer = new typed_data.Uint8List(bufferSize); |
- this.index = 0; |
- super._JsonStringifier(dart.as(toEncodable, dart.throw_("Unimplemented type (Object) → Object"))); |
- } |
- static stringify(object, indent, toEncodableFunction, bufferSize, addChunk) { |
- let stringifier = null; |
- if (indent !== null) { |
- stringifier = new _JsonUtf8StringifierPretty(toEncodableFunction, indent, bufferSize, addChunk); |
- } else { |
- stringifier = new _JsonUtf8Stringifier(toEncodableFunction, bufferSize, addChunk); |
- } |
- stringifier.writeObject(object); |
- stringifier.flush(); |
- } |
- flush() { |
- if (dart.notNull(this.index) > 0) { |
- dart.dinvokef(this.addChunk, this.buffer, 0, this.index); |
- } |
- this.buffer = null; |
- this.index = 0; |
- } |
- writeNumber(number) { |
- this.writeAsciiString(number.toString()); |
- } |
- writeAsciiString(string) { |
- for (let i = 0; dart.notNull(i) < dart.notNull(string.length); i = dart.notNull(i) + 1) { |
- let char = string.codeUnitAt(i); |
- dart.assert(dart.notNull(char) <= 127); |
- this.writeByte(char); |
- } |
- } |
- writeString(string) { |
- this.writeStringSlice(string, 0, string.length); |
- } |
- writeStringSlice(string, start, end) { |
- for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { |
- let char = string.codeUnitAt(i); |
- if (dart.notNull(char) <= 127) { |
- this.writeByte(char); |
- } else { |
- if ((dart.notNull(char) & 64512) === 55296 && dart.notNull(i) + 1 < dart.notNull(end)) { |
- let nextChar = string.codeUnitAt(dart.notNull(i) + 1); |
- if ((dart.notNull(nextChar) & 64512) === 56320) { |
- char = 65536 + ((dart.notNull(char) & 1023) << 10) + (dart.notNull(nextChar) & 1023); |
- this.writeFourByteCharCode(char); |
- i = dart.notNull(i) + 1; |
- continue; |
- } |
- } |
- this.writeMultiByteCharCode(char); |
- } |
- } |
- } |
- writeCharCode(charCode) { |
- if (dart.notNull(charCode) <= 127) { |
- this.writeByte(charCode); |
- return; |
- } |
- this.writeMultiByteCharCode(charCode); |
- } |
- writeMultiByteCharCode(charCode) { |
- if (dart.notNull(charCode) <= 2047) { |
- this.writeByte(192 | dart.notNull(charCode) >> 6); |
- this.writeByte(128 | dart.notNull(charCode) & 63); |
- return; |
- } |
- if (dart.notNull(charCode) <= 65535) { |
- this.writeByte(224 | dart.notNull(charCode) >> 12); |
- this.writeByte(128 | dart.notNull(charCode) >> 6 & 63); |
- this.writeByte(128 | dart.notNull(charCode) & 63); |
- return; |
- } |
- this.writeFourByteCharCode(charCode); |
- } |
- writeFourByteCharCode(charCode) { |
- dart.assert(dart.notNull(charCode) <= 1114111); |
- this.writeByte(240 | dart.notNull(charCode) >> 18); |
- this.writeByte(128 | dart.notNull(charCode) >> 12 & 63); |
- this.writeByte(128 | dart.notNull(charCode) >> 6 & 63); |
- this.writeByte(128 | dart.notNull(charCode) & 63); |
- } |
- writeByte(byte) { |
- dart.assert(dart.notNull(byte) <= 255); |
- if (this.index === this.buffer.length) { |
- dart.dinvokef(this.addChunk, this.buffer, 0, this.index); |
- this.buffer = new typed_data.Uint8List(this.bufferSize); |
- this.index = 0; |
- } |
- this.buffer.set((($tmp) => this.index = dart.notNull($tmp) + 1, $tmp).bind(this)(this.index), byte); |
- } |
- } |
- class _JsonUtf8StringifierPretty extends dart.mixin(_JsonUtf8Stringifier, _JsonPrettyPrintMixin) { |
- _JsonUtf8StringifierPretty(toEncodableFunction, indent, bufferSize, addChunk) { |
- this.indent = indent; |
- super._JsonUtf8Stringifier(toEncodableFunction, dart.as(bufferSize, core.int), dart.as(addChunk, core.Function)); |
- } |
- writeIndentation(count) { |
- let indent = this.indent; |
- let indentLength = indent.length; |
- if (indentLength === 1) { |
- let char = indent.get(0); |
- while (dart.notNull(count) > 0) { |
- this.writeByte(char); |
- count = 1; |
- } |
- return; |
- } |
- while (dart.notNull(count) > 0) { |
- count = dart.notNull(count) - 1; |
- let end = dart.notNull(this.index) + dart.notNull(indentLength); |
- if (dart.notNull(end) <= dart.notNull(this.buffer.length)) { |
- this.buffer.setRange(this.index, end, indent); |
- this.index = end; |
- } else { |
- for (let i = 0; dart.notNull(i) < dart.notNull(indentLength); i = dart.notNull(i) + 1) { |
- this.writeByte(indent.get(i)); |
- } |
- } |
- } |
- } |
- } |
- let LATIN1 = new Latin1Codec(); |
- let _LATIN1_MASK = 255; |
- class Latin1Codec extends Encoding { |
- Latin1Codec(opt$) { |
- let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid; |
- this[_allowInvalid] = allowInvalid; |
- super.Encoding(); |
- } |
- get name() { |
- return "iso-8859-1"; |
- } |
- decode(bytes, opt$) { |
- let allowInvalid = opt$.allowInvalid === void 0 ? null : opt$.allowInvalid; |
- if (allowInvalid === null) |
- allowInvalid = this[_allowInvalid]; |
- if (allowInvalid) { |
- return new Latin1Decoder({allowInvalid: true}).convert(bytes); |
- } else { |
- return new Latin1Decoder({allowInvalid: false}).convert(bytes); |
- } |
- } |
- get encoder() { |
- return new Latin1Encoder(); |
- } |
- get decoder() { |
- return this[_allowInvalid] ? new Latin1Decoder({allowInvalid: true}) : new Latin1Decoder({allowInvalid: false}); |
- } |
- } |
- class Latin1Encoder extends _UnicodeSubsetEncoder { |
- Latin1Encoder() { |
- super._UnicodeSubsetEncoder(_LATIN1_MASK); |
- } |
- } |
- class Latin1Decoder extends _UnicodeSubsetDecoder { |
- Latin1Decoder(opt$) { |
- let allowInvalid = opt$.allowInvalid === void 0 ? false : opt$.allowInvalid; |
- super._UnicodeSubsetDecoder(allowInvalid, _LATIN1_MASK); |
- } |
- startChunkedConversion(sink) { |
- let stringSink = null; |
- if (dart.is(sink, StringConversionSink)) { |
- stringSink = sink; |
- } else { |
- stringSink = new StringConversionSink.from(sink); |
- } |
- if (!dart.notNull(this[_allowInvalid])) |
- return new _Latin1DecoderSink(stringSink); |
- return new _Latin1AllowInvalidDecoderSink(stringSink); |
- } |
- } |
- let _addSliceToSink = Symbol('_addSliceToSink'); |
- class _Latin1DecoderSink extends ByteConversionSinkBase { |
- _Latin1DecoderSink($_sink) { |
- this[_sink] = $_sink; |
- super.ByteConversionSinkBase(); |
- } |
- close() { |
- this[_sink].close(); |
- } |
- add(source) { |
- this.addSlice(source, 0, source.length, false); |
- } |
- [_addSliceToSink](source, start, end, isLast) { |
- this[_sink].add(new core.String.fromCharCodes(source, start, end)); |
- if (isLast) |
- this.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 char = source.get(i); |
- if (dart.notNull(char) > dart.notNull(_LATIN1_MASK) || dart.notNull(char) < 0) { |
- throw new core.FormatException("Source contains non-Latin-1 characters."); |
- } |
- } |
- if (dart.notNull(start) < dart.notNull(end)) { |
- this[_addSliceToSink](source, start, end, isLast); |
- } |
- if (isLast) { |
- this.close(); |
- } |
- } |
- } |
- class _Latin1AllowInvalidDecoderSink extends _Latin1DecoderSink { |
- _Latin1AllowInvalidDecoderSink(sink) { |
- super._Latin1DecoderSink(sink); |
- } |
- 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 char = source.get(i); |
- if (dart.notNull(char) > dart.notNull(_LATIN1_MASK) || dart.notNull(char) < 0) { |
- if (dart.notNull(i) > dart.notNull(start)) |
- this[_addSliceToSink](source, start, i, false); |
- this[_addSliceToSink](dart.as(/* Unimplemented const */new List.from([65533]), core.List$(core.int)), 0, 1, false); |
- start = dart.notNull(i) + 1; |
- } |
- } |
- if (dart.notNull(start) < dart.notNull(end)) { |
- this[_addSliceToSink](source, start, end, isLast); |
- } |
- if (isLast) { |
- this.close(); |
- } |
- } |
- } |
- class LineSplitter extends Converter$(core.String, core.List$(core.String)) { |
- LineSplitter() { |
- super.Converter(); |
- } |
- convert(data) { |
- let lines = new core.List(); |
- _LineSplitterSink._addSlice(data, 0, data.length, true, lines.add); |
- return lines; |
- } |
- startChunkedConversion(sink) { |
- if (!dart.is(sink, StringConversionSink)) { |
- sink = new StringConversionSink.from(sink); |
- } |
- return new _LineSplitterSink(dart.as(sink, StringConversionSink)); |
- } |
- } |
- let _carry = Symbol('_carry'); |
- let _addSlice = Symbol('_addSlice'); |
- class _LineSplitterSink extends StringConversionSinkBase { |
- _LineSplitterSink($_sink) { |
- this[_sink] = $_sink; |
- this[_carry] = null; |
- super.StringConversionSinkBase(); |
- } |
- addSlice(chunk, start, end, isLast) { |
- if (this[_carry] !== null) { |
- chunk = core.String['+'](this[_carry], chunk.substring(start, end)); |
- start = 0; |
- end = chunk.length; |
- this[_carry] = null; |
- } |
- this[_carry] = _addSlice(chunk, start, end, isLast, this[_sink].add); |
- if (isLast) |
- this[_sink].close(); |
- } |
- close() { |
- this.addSlice('', 0, 0, true); |
- } |
- static [_addSlice](chunk, start, end, isLast, adder) { |
- let pos = start; |
- while (dart.notNull(pos) < dart.notNull(end)) { |
- let skip = 0; |
- let char = chunk.codeUnitAt(pos); |
- if (char === _LineSplitterSink._LF) { |
- skip = 1; |
- } else if (char === _LineSplitterSink._CR) { |
- skip = 1; |
- if (dart.notNull(pos) + 1 < dart.notNull(end)) { |
- if (chunk.codeUnitAt(dart.notNull(pos) + 1) === _LineSplitterSink._LF) { |
- skip = 2; |
- } |
- } else if (!dart.notNull(isLast)) { |
- return chunk.substring(start, end); |
- } |
- } |
- if (dart.notNull(skip) > 0) { |
- adder(chunk.substring(start, pos)); |
- start = pos = dart.notNull(pos) + dart.notNull(skip); |
- } else { |
- pos = dart.notNull(pos) + 1; |
- } |
- } |
- if (pos !== start) { |
- let carry = chunk.substring(start, pos); |
- if (isLast) { |
- adder(carry); |
- } else { |
- return carry; |
- } |
- } |
- return null; |
- } |
- } |
- _LineSplitterSink._LF = 10; |
- _LineSplitterSink._CR = 13; |
- class StringConversionSink extends ChunkedConversionSink$(core.String) { |
- StringConversionSink() { |
- super.ChunkedConversionSink(); |
- } |
- StringConversionSink$withCallback(callback) { |
- return new _StringCallbackSink(callback); |
- } |
- StringConversionSink$from(sink) { |
- return new _StringAdapterSink(sink); |
- } |
- StringConversionSink$fromStringSink(sink) { |
- return new _StringSinkConversionSink(sink); |
- } |
- } |
- dart.defineNamedConstructor(StringConversionSink, 'withCallback'); |
- dart.defineNamedConstructor(StringConversionSink, 'from'); |
- dart.defineNamedConstructor(StringConversionSink, 'fromStringSink'); |
- class ClosableStringSink extends core.StringSink { |
- ClosableStringSink$fromStringSink(sink, onClose) { |
- return new _ClosableStringSink(sink, onClose); |
- } |
- } |
- dart.defineNamedConstructor(ClosableStringSink, 'fromStringSink'); |
- class _ClosableStringSink extends core.Object { |
- _ClosableStringSink($_sink, $_callback) { |
- this[_sink] = $_sink; |
- this[_callback] = $_callback; |
- } |
- close() { |
- return this[_callback](); |
- } |
- writeCharCode(charCode) { |
- return this[_sink].writeCharCode(charCode); |
- } |
- write(o) { |
- return this[_sink].write(o); |
- } |
- writeln(o) { |
- if (o === void 0) |
- o = ""; |
- return this[_sink].writeln(o); |
- } |
- writeAll(objects, separator) { |
- if (separator === void 0) |
- separator = ""; |
- return this[_sink].writeAll(objects, separator); |
- } |
- } |
- let _flush = Symbol('_flush'); |
- class _StringConversionSinkAsStringSinkAdapter extends core.Object { |
- _StringConversionSinkAsStringSinkAdapter($_chunkedSink) { |
- this[_chunkedSink] = $_chunkedSink; |
- this[_buffer] = new core.StringBuffer(); |
- } |
- close() { |
- if (this[_buffer].isNotEmpty) |
- this[_flush](); |
- this[_chunkedSink].close(); |
- } |
- writeCharCode(charCode) { |
- this[_buffer].writeCharCode(charCode); |
- if (dart.notNull(this[_buffer].length) > dart.notNull(_StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE)) |
- this[_flush](); |
- } |
- write(o) { |
- if (this[_buffer].isNotEmpty) |
- this[_flush](); |
- let str = o.toString(); |
- this[_chunkedSink].add(o.toString()); |
- } |
- writeln(o) { |
- if (o === void 0) |
- o = ""; |
- this[_buffer].writeln(o); |
- if (dart.notNull(this[_buffer].length) > dart.notNull(_StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE)) |
- this[_flush](); |
- } |
- writeAll(objects, separator) { |
- if (separator === void 0) |
- separator = ""; |
- if (this[_buffer].isNotEmpty) |
- this[_flush](); |
- let iterator = objects.iterator; |
- if (!dart.notNull(iterator.moveNext())) |
- return; |
- if (separator.isEmpty) { |
- do { |
- this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); |
- } while (iterator.moveNext()); |
- } else { |
- this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); |
- while (iterator.moveNext()) { |
- this.write(separator); |
- this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); |
- } |
- } |
- } |
- [_flush]() { |
- let accumulated = this[_buffer].toString(); |
- this[_buffer].clear(); |
- this[_chunkedSink].add(accumulated); |
- } |
- } |
- _StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE = 16; |
- let _stringSink = Symbol('_stringSink'); |
- class _StringSinkConversionSink extends StringConversionSinkBase { |
- _StringSinkConversionSink($_stringSink) { |
- this[_stringSink] = $_stringSink; |
- super.StringConversionSinkBase(); |
- } |
- close() {} |
- addSlice(str, start, end, isLast) { |
- if (start !== 0 || end !== str.length) { |
- for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { |
- this[_stringSink].writeCharCode(str.codeUnitAt(i)); |
- } |
- } else { |
- this[_stringSink].write(str); |
- } |
- if (isLast) |
- this.close(); |
- } |
- add(str) { |
- return this[_stringSink].write(str); |
- } |
- asUtf8Sink(allowMalformed) { |
- return new _Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed); |
- } |
- asStringSink() { |
- return new ClosableStringSink.fromStringSink(this[_stringSink], this.close); |
- } |
- } |
- class _StringCallbackSink extends _StringSinkConversionSink { |
- _StringCallbackSink($_callback) { |
- this[_callback] = $_callback; |
- super._StringSinkConversionSink(new core.StringBuffer()); |
- } |
- close() { |
- let buffer = dart.as(this[_stringSink], core.StringBuffer); |
- let accumulated = buffer.toString(); |
- buffer.clear(); |
- this[_callback](accumulated); |
- } |
- asUtf8Sink(allowMalformed) { |
- return new _Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed); |
- } |
- } |
- class _StringAdapterSink extends StringConversionSinkBase { |
- _StringAdapterSink($_sink) { |
- this[_sink] = $_sink; |
- super.StringConversionSinkBase(); |
- } |
- add(str) { |
- return this[_sink].add(str); |
- } |
- addSlice(str, start, end, isLast) { |
- if (start === 0 && end === str.length) { |
- this.add(str); |
- } else { |
- this.add(str.substring(start, end)); |
- } |
- if (isLast) |
- this.close(); |
- } |
- close() { |
- return this[_sink].close(); |
- } |
- } |
- let _decoder = Symbol('_decoder'); |
- class _Utf8StringSinkAdapter extends ByteConversionSink { |
- _Utf8StringSinkAdapter($_sink, stringSink, allowMalformed) { |
- this[_sink] = $_sink; |
- this[_decoder] = new _Utf8Decoder(stringSink, allowMalformed); |
- super.ByteConversionSink(); |
- } |
- close() { |
- this[_decoder].close(); |
- if (this[_sink] !== null) |
- this[_sink].close(); |
- } |
- add(chunk) { |
- this.addSlice(chunk, 0, chunk.length, false); |
- } |
- addSlice(codeUnits, startIndex, endIndex, isLast) { |
- this[_decoder].convert(codeUnits, startIndex, endIndex); |
- if (isLast) |
- this.close(); |
- } |
- } |
- let _Utf8ConversionSink$_ = Symbol('_Utf8ConversionSink$_'); |
- class _Utf8ConversionSink extends ByteConversionSink { |
- _Utf8ConversionSink(sink, allowMalformed) { |
- this[_Utf8ConversionSink$_](sink, new core.StringBuffer(), allowMalformed); |
- } |
- _Utf8ConversionSink$_($_chunkedSink, stringBuffer, allowMalformed) { |
- this[_chunkedSink] = $_chunkedSink; |
- this[_decoder] = new _Utf8Decoder(stringBuffer, allowMalformed); |
- this[_buffer] = stringBuffer; |
- super.ByteConversionSink(); |
- } |
- close() { |
- this[_decoder].close(); |
- if (this[_buffer].isNotEmpty) { |
- let accumulated = this[_buffer].toString(); |
- this[_buffer].clear(); |
- this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, true); |
- } else { |
- this[_chunkedSink].close(); |
- } |
- } |
- add(chunk) { |
- this.addSlice(chunk, 0, chunk.length, false); |
- } |
- addSlice(chunk, startIndex, endIndex, isLast) { |
- this[_decoder].convert(chunk, startIndex, endIndex); |
- if (this[_buffer].isNotEmpty) { |
- let accumulated = this[_buffer].toString(); |
- this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, isLast); |
- this[_buffer].clear(); |
- return; |
- } |
- if (isLast) |
- this.close(); |
- } |
- } |
- dart.defineNamedConstructor(_Utf8ConversionSink, '_'); |
- let UNICODE_REPLACEMENT_CHARACTER_RUNE = 65533; |
- let UNICODE_BOM_CHARACTER_RUNE = 65279; |
- let UTF8 = new Utf8Codec(); |
- let _allowMalformed = Symbol('_allowMalformed'); |
- class Utf8Codec extends Encoding { |
- Utf8Codec(opt$) { |
- let allowMalformed = opt$.allowMalformed === void 0 ? false : opt$.allowMalformed; |
- this[_allowMalformed] = allowMalformed; |
- super.Encoding(); |
- } |
- get name() { |
- return "utf-8"; |
- } |
- decode(codeUnits, opt$) { |
- let allowMalformed = opt$.allowMalformed === void 0 ? null : opt$.allowMalformed; |
- if (allowMalformed === null) |
- allowMalformed = this[_allowMalformed]; |
- return new Utf8Decoder({allowMalformed: allowMalformed}).convert(codeUnits); |
- } |
- get encoder() { |
- return new Utf8Encoder(); |
- } |
- get decoder() { |
- return new Utf8Decoder({allowMalformed: this[_allowMalformed]}); |
- } |
- } |
- class Utf8Encoder extends Converter$(core.String, core.List$(core.int)) { |
- Utf8Encoder() { |
- 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); |
- if (length === 0) |
- return new typed_data.Uint8List(0); |
- let encoder = new _Utf8Encoder.withBufferSize(dart.notNull(length) * 3); |
- let endPosition = encoder._fillBuffer(string, start, end); |
- dart.assert(dart.notNull(endPosition) >= dart.notNull(end) - 1); |
- if (endPosition !== end) { |
- let lastCodeUnit = string.codeUnitAt(dart.notNull(end) - 1); |
- dart.assert(_isLeadSurrogate(lastCodeUnit)); |
- let wasCombined = encoder._writeSurrogate(lastCodeUnit, 0); |
- dart.assert(!dart.notNull(wasCombined)); |
- } |
- return encoder[_buffer].sublist(0, encoder[_bufferIndex]); |
- } |
- startChunkedConversion(sink) { |
- if (!dart.is(sink, ByteConversionSink)) { |
- sink = new ByteConversionSink.from(sink); |
- } |
- return new _Utf8EncoderSink(dart.as(sink, ByteConversionSink)); |
- } |
- bind(stream) { |
- return dart.as(super.bind(stream), async.Stream$(core.List$(core.int))); |
- } |
- } |
- let _Utf8Encoder$withBufferSize = Symbol('_Utf8Encoder$withBufferSize'); |
- let _createBuffer = Symbol('_createBuffer'); |
- let _writeSurrogate = Symbol('_writeSurrogate'); |
- let _fillBuffer = Symbol('_fillBuffer'); |
- class _Utf8Encoder extends core.Object { |
- _Utf8Encoder() { |
- this[_Utf8Encoder$withBufferSize](_Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE); |
- } |
- _Utf8Encoder$withBufferSize(bufferSize) { |
- this[_buffer] = _createBuffer(bufferSize); |
- this[_carry] = 0; |
- this[_bufferIndex] = 0; |
- } |
- static [_createBuffer](size) { |
- return new typed_data.Uint8List(size); |
- } |
- [_writeSurrogate](leadingSurrogate, nextCodeUnit) { |
- if (_isTailSurrogate(nextCodeUnit)) { |
- let rune = _combineSurrogatePair(leadingSurrogate, nextCodeUnit); |
- dart.assert(dart.notNull(rune) > dart.notNull(_THREE_BYTE_LIMIT)); |
- dart.assert(dart.notNull(rune) <= dart.notNull(_FOUR_BYTE_LIMIT)); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 240 | dart.notNull(rune) >> 18); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 12 & 63); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 6 & 63); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); |
- return true; |
- } else { |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 224 | dart.notNull(leadingSurrogate) >> 12); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(leadingSurrogate) >> 6 & 63); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(leadingSurrogate) & 63); |
- return false; |
- } |
- } |
- [_fillBuffer](str, start, end) { |
- if (start !== end && dart.notNull(_isLeadSurrogate(str.codeUnitAt(dart.notNull(end) - 1)))) { |
- end = dart.notNull(end) - 1; |
- } |
- let stringIndex = null; |
- for (stringIndex = start; dart.notNull(stringIndex) < dart.notNull(end); stringIndex = dart.notNull(stringIndex) + 1) { |
- let codeUnit = str.codeUnitAt(stringIndex); |
- if (dart.notNull(codeUnit) <= dart.notNull(_ONE_BYTE_LIMIT)) { |
- if (dart.notNull(this[_bufferIndex]) >= dart.notNull(this[_buffer].length)) |
- break; |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), codeUnit); |
- } else if (_isLeadSurrogate(codeUnit)) { |
- if (dart.notNull(this[_bufferIndex]) + 3 >= dart.notNull(this[_buffer].length)) |
- break; |
- let nextCodeUnit = str.codeUnitAt(dart.notNull(stringIndex) + 1); |
- let wasCombined = this[_writeSurrogate](codeUnit, nextCodeUnit); |
- if (wasCombined) |
- stringIndex = dart.notNull(stringIndex) + 1; |
- } else { |
- let rune = codeUnit; |
- if (dart.notNull(rune) <= dart.notNull(_TWO_BYTE_LIMIT)) { |
- if (dart.notNull(this[_bufferIndex]) + 1 >= dart.notNull(this[_buffer].length)) |
- break; |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 192 | dart.notNull(rune) >> 6); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); |
- } else { |
- dart.assert(dart.notNull(rune) <= dart.notNull(_THREE_BYTE_LIMIT)); |
- if (dart.notNull(this[_bufferIndex]) + 2 >= dart.notNull(this[_buffer].length)) |
- break; |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 224 | dart.notNull(rune) >> 12); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 6 & 63); |
- this[_buffer].set((($tmp) => this[_bufferIndex] = dart.notNull($tmp) + 1, $tmp).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); |
- } |
- } |
- } |
- return stringIndex; |
- } |
- } |
- dart.defineNamedConstructor(_Utf8Encoder, 'withBufferSize'); |
- _Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE = 1024; |
- class _Utf8EncoderSink extends dart.mixin(_Utf8Encoder, StringConversionSinkMixin) { |
- _Utf8EncoderSink($_sink) { |
- this[_sink] = $_sink; |
- super._Utf8Encoder(); |
- } |
- close() { |
- if (this[_carry] !== 0) { |
- this.addSlice("", 0, 0, true); |
- return; |
- } |
- this[_sink].close(); |
- } |
- addSlice(str, start, end, isLast) { |
- this[_bufferIndex] = 0; |
- if (start === end && !dart.notNull(isLast)) { |
- return; |
- } |
- if (this[_carry] !== 0) { |
- let nextCodeUnit = 0; |
- if (start !== end) { |
- nextCodeUnit = str.codeUnitAt(start); |
- } else { |
- dart.assert(isLast); |
- } |
- let wasCombined = this[_writeSurrogate](this[_carry], nextCodeUnit); |
- dart.assert(!dart.notNull(wasCombined) || start !== end); |
- if (wasCombined) |
- start = dart.notNull(start) + 1; |
- this[_carry] = 0; |
- } |
- do { |
- start = this[_fillBuffer](str, start, end); |
- let isLastSlice = dart.notNull(isLast) && start === end; |
- if (start === dart.notNull(end) - 1 && dart.notNull(_isLeadSurrogate(str.codeUnitAt(start)))) { |
- if (dart.notNull(isLast) && dart.notNull(this[_bufferIndex]) < dart.notNull(this[_buffer].length) - 3) { |
- let hasBeenCombined = this[_writeSurrogate](str.codeUnitAt(start), 0); |
- dart.assert(!dart.notNull(hasBeenCombined)); |
- } else { |
- this[_carry] = str.codeUnitAt(start); |
- } |
- start = dart.notNull(start) + 1; |
- } |
- this[_sink].addSlice(this[_buffer], 0, this[_bufferIndex], isLastSlice); |
- this[_bufferIndex] = 0; |
- } while (dart.notNull(start) < dart.notNull(end)); |
- if (isLast) |
- this.close(); |
- } |
- } |
- class Utf8Decoder extends Converter$(core.List$(core.int), core.String) { |
- Utf8Decoder(opt$) { |
- let allowMalformed = opt$.allowMalformed === void 0 ? false : opt$.allowMalformed; |
- this[_allowMalformed] = allowMalformed; |
- super.Converter(); |
- } |
- convert(codeUnits, start, end) { |
- if (start === void 0) |
- start = 0; |
- if (end === void 0) |
- end = null; |
- let length = codeUnits.length; |
- core.RangeError.checkValidRange(start, end, length); |
- if (end === null) |
- end = length; |
- let buffer = new core.StringBuffer(); |
- let decoder = new _Utf8Decoder(buffer, this[_allowMalformed]); |
- decoder.convert(codeUnits, start, end); |
- decoder.close(); |
- return buffer.toString(); |
- } |
- startChunkedConversion(sink) { |
- let stringSink = null; |
- if (dart.is(sink, StringConversionSink)) { |
- stringSink = sink; |
- } else { |
- stringSink = new StringConversionSink.from(sink); |
- } |
- return stringSink.asUtf8Sink(this[_allowMalformed]); |
- } |
- bind(stream) { |
- return dart.as(super.bind(stream), async.Stream$(core.String)); |
- } |
- fuse(next) { |
- return super.fuse(next); |
- } |
- } |
- let _ONE_BYTE_LIMIT = 127; |
- let _TWO_BYTE_LIMIT = 2047; |
- let _THREE_BYTE_LIMIT = 65535; |
- let _FOUR_BYTE_LIMIT = 1114111; |
- let _SURROGATE_MASK = 63488; |
- let _SURROGATE_TAG_MASK = 64512; |
- let _SURROGATE_VALUE_MASK = 1023; |
- let _LEAD_SURROGATE_MIN = 55296; |
- let _TAIL_SURROGATE_MIN = 56320; |
- // Function _isSurrogate: (int) → bool |
- function _isSurrogate(codeUnit) { |
- return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_MASK)) === _LEAD_SURROGATE_MIN; |
- } |
- // Function _isLeadSurrogate: (int) → bool |
- function _isLeadSurrogate(codeUnit) { |
- return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_TAG_MASK)) === _LEAD_SURROGATE_MIN; |
- } |
- // Function _isTailSurrogate: (int) → bool |
- function _isTailSurrogate(codeUnit) { |
- return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_TAG_MASK)) === _TAIL_SURROGATE_MIN; |
- } |
- // Function _combineSurrogatePair: (int, int) → int |
- function _combineSurrogatePair(lead, tail) { |
- return 65536 + ((dart.notNull(lead) & dart.notNull(_SURROGATE_VALUE_MASK)) << 10) | dart.notNull(tail) & dart.notNull(_SURROGATE_VALUE_MASK); |
- } |
- let _isFirstCharacter = Symbol('_isFirstCharacter'); |
- let _value = Symbol('_value'); |
- let _expectedUnits = Symbol('_expectedUnits'); |
- let _extraUnits = Symbol('_extraUnits'); |
- class _Utf8Decoder extends core.Object { |
- _Utf8Decoder($_stringSink, $_allowMalformed) { |
- this[_stringSink] = $_stringSink; |
- this[_allowMalformed] = $_allowMalformed; |
- this[_isFirstCharacter] = true; |
- this[_value] = 0; |
- this[_expectedUnits] = 0; |
- this[_extraUnits] = 0; |
- } |
- get hasPartialInput() { |
- return dart.notNull(this[_expectedUnits]) > 0; |
- } |
- close() { |
- this.flush(); |
- } |
- flush() { |
- if (this.hasPartialInput) { |
- if (!dart.notNull(this[_allowMalformed])) { |
- throw new core.FormatException("Unfinished UTF-8 octet sequence"); |
- } |
- this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); |
- this[_value] = 0; |
- this[_expectedUnits] = 0; |
- this[_extraUnits] = 0; |
- } |
- } |
- convert(codeUnits, startIndex, endIndex) { |
- let value = this[_value]; |
- let expectedUnits = this[_expectedUnits]; |
- let extraUnits = this[_extraUnits]; |
- this[_value] = 0; |
- this[_expectedUnits] = 0; |
- this[_extraUnits] = 0; |
- // Function scanOneByteCharacters: (dynamic, int) → int |
- function scanOneByteCharacters(units, from) { |
- let to = endIndex; |
- let mask = _ONE_BYTE_LIMIT; |
- for (let i = from; dart.notNull(i) < dart.notNull(to); i = dart.notNull(i) + 1) { |
- let unit = dart.dindex(units, i); |
- if (!dart.equals(dart.dbinary(unit, '&', mask), unit)) |
- return dart.notNull(i) - dart.notNull(from); |
- } |
- return dart.notNull(to) - dart.notNull(from); |
- } |
- // Function addSingleBytes: (int, int) → void |
- function addSingleBytes(from, to) { |
- dart.assert(dart.notNull(from) >= dart.notNull(startIndex) && dart.notNull(from) <= dart.notNull(endIndex)); |
- dart.assert(dart.notNull(to) >= dart.notNull(startIndex) && dart.notNull(to) <= dart.notNull(endIndex)); |
- this[_stringSink].write(new core.String.fromCharCodes(codeUnits, from, to)); |
- } |
- let i = startIndex; |
- loop: |
- while (true) { |
- multibyte: |
- if (dart.notNull(expectedUnits) > 0) { |
- do { |
- if (i === endIndex) { |
- break loop; |
- } |
- let unit = codeUnits.get(i); |
- if ((dart.notNull(unit) & 192) !== 128) { |
- expectedUnits = 0; |
- if (!dart.notNull(this[_allowMalformed])) { |
- throw new core.FormatException(`Bad UTF-8 encoding 0x${unit.toRadixString(16)}`); |
- } |
- this[_isFirstCharacter] = false; |
- this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); |
- break multibyte; |
- } else { |
- value = dart.notNull(value) << 6 | dart.notNull(unit) & 63; |
- expectedUnits = dart.notNull(expectedUnits) - 1; |
- i = dart.notNull(i) + 1; |
- } |
- } while (dart.notNull(expectedUnits) > 0); |
- 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)}`); |
- } |
- expectedUnits = extraUnits = 0; |
- value = UNICODE_REPLACEMENT_CHARACTER_RUNE; |
- } |
- if (dart.notNull(value) > dart.notNull(_FOUR_BYTE_LIMIT)) { |
- if (!dart.notNull(this[_allowMalformed])) { |
- throw new core.FormatException("Character outside valid Unicode range: " + `0x${value.toRadixString(16)}`); |
- } |
- value = UNICODE_REPLACEMENT_CHARACTER_RUNE; |
- } |
- if (!dart.notNull(this[_isFirstCharacter]) || value !== UNICODE_BOM_CHARACTER_RUNE) { |
- this[_stringSink].writeCharCode(value); |
- } |
- this[_isFirstCharacter] = false; |
- } |
- while (dart.notNull(i) < dart.notNull(endIndex)) { |
- let oneBytes = scanOneByteCharacters(codeUnits, i); |
- if (dart.notNull(oneBytes) > 0) { |
- this[_isFirstCharacter] = false; |
- addSingleBytes(i, dart.notNull(i) + dart.notNull(oneBytes)); |
- i = oneBytes; |
- if (i === endIndex) |
- break; |
- } |
- let unit = codeUnits.get((($tmp) => i = dart.notNull($tmp) + 1, $tmp)(i)); |
- if (dart.notNull(unit) < 0) { |
- if (!dart.notNull(this[_allowMalformed])) { |
- throw new core.FormatException(`Negative UTF-8 code unit: -0x${(-dart.notNull(unit)).toRadixString(16)}`); |
- } |
- this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); |
- } else { |
- dart.assert(dart.notNull(unit) > dart.notNull(_ONE_BYTE_LIMIT)); |
- if ((dart.notNull(unit) & 224) === 192) { |
- value = dart.notNull(unit) & 31; |
- expectedUnits = extraUnits = 1; |
- continue loop; |
- } |
- if ((dart.notNull(unit) & 240) === 224) { |
- value = dart.notNull(unit) & 15; |
- expectedUnits = extraUnits = 2; |
- continue loop; |
- } |
- if ((dart.notNull(unit) & 248) === 240 && dart.notNull(unit) < 245) { |
- value = dart.notNull(unit) & 7; |
- expectedUnits = extraUnits = 3; |
- continue loop; |
- } |
- if (!dart.notNull(this[_allowMalformed])) { |
- throw new core.FormatException(`Bad UTF-8 encoding 0x${unit.toRadixString(16)}`); |
- } |
- value = UNICODE_REPLACEMENT_CHARACTER_RUNE; |
- expectedUnits = extraUnits = 0; |
- this[_isFirstCharacter] = false; |
- this[_stringSink].writeCharCode(value); |
- } |
- } |
- break loop; |
- } |
- if (dart.notNull(expectedUnits) > 0) { |
- this[_value] = value; |
- this[_expectedUnits] = expectedUnits; |
- this[_extraUnits] = extraUnits; |
- } |
- } |
- } |
- _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] = dart.dinvokef(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 = dart.dinvokef(reviver, key, walk(e[key])); |
- processed[key] = revived; |
- } |
- map[_original] = processed; |
- return map; |
- } |
- return dart.dinvokef(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); |
- } |
- dart.dinvokef(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; |
- exports.Encoding = Encoding; |
- exports.Codec = Codec; |
- exports.Codec$ = Codec$; |
- exports.Converter = Converter; |
- exports.Converter$ = Converter$; |
- exports.AsciiEncoder = AsciiEncoder; |
- exports.StringConversionSinkBase = StringConversionSinkBase; |
- exports.StringConversionSinkMixin = StringConversionSinkMixin; |
- exports.AsciiDecoder = AsciiDecoder; |
- exports.ByteConversionSinkBase = ByteConversionSinkBase; |
- exports.ByteConversionSink = ByteConversionSink; |
- exports.ChunkedConversionSink = ChunkedConversionSink; |
- exports.ChunkedConversionSink$ = ChunkedConversionSink$; |
- exports.HTML_ESCAPE = HTML_ESCAPE; |
- exports.HtmlEscapeMode = HtmlEscapeMode; |
- exports.HtmlEscape = HtmlEscape; |
- exports.JsonUnsupportedObjectError = JsonUnsupportedObjectError; |
- exports.JsonCyclicError = JsonCyclicError; |
- exports.JSON = JSON; |
- exports.JsonCodec = JsonCodec; |
- exports.JsonEncoder = JsonEncoder; |
- exports.JsonUtf8Encoder = JsonUtf8Encoder; |
- exports.JsonDecoder = JsonDecoder; |
- exports.LATIN1 = LATIN1; |
- exports.Latin1Codec = Latin1Codec; |
- exports.Latin1Encoder = Latin1Encoder; |
- exports.Latin1Decoder = Latin1Decoder; |
- exports.LineSplitter = LineSplitter; |
- exports.StringConversionSink = StringConversionSink; |
- exports.ClosableStringSink = ClosableStringSink; |
- exports.UNICODE_REPLACEMENT_CHARACTER_RUNE = UNICODE_REPLACEMENT_CHARACTER_RUNE; |
- exports.UNICODE_BOM_CHARACTER_RUNE = UNICODE_BOM_CHARACTER_RUNE; |
- exports.UTF8 = UTF8; |
- exports.Utf8Codec = Utf8Codec; |
- exports.Utf8Encoder = Utf8Encoder; |
- exports.Utf8Decoder = Utf8Decoder; |
-})(convert || (convert = {})); |