quicktype-core 23.3.7 → 23.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1257,8 +1257,8 @@ class CPlusPlusRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
|
|
|
1257
1257
|
]), ") x = ", ourQualifier, enumName, "::", name, ";");
|
|
1258
1258
|
onFirst = false;
|
|
1259
1259
|
});
|
|
1260
|
-
this.emitLine('else { throw std::runtime_error("Input JSON does not conform to schema!"); }');
|
|
1261
1260
|
}
|
|
1261
|
+
this.emitLine('else { throw std::runtime_error("Input JSON does not conform to schema!"); }');
|
|
1262
1262
|
});
|
|
1263
1263
|
this.ensureBlankLine();
|
|
1264
1264
|
this.emitBlock([
|
|
@@ -323,14 +323,14 @@ class SystemTextJsonCSharpRenderer extends CSharpRenderer_1.CSharpRenderer {
|
|
|
323
323
|
}, true);
|
|
324
324
|
});
|
|
325
325
|
}
|
|
326
|
-
emitDecoderTransformerCase(tokenCases, variableName, xfer, targetType, emitFinish) {
|
|
326
|
+
emitDecoderTransformerCase(tokenCases, variableName, xfer, targetType, emitFinish, varGen) {
|
|
327
327
|
if (xfer === undefined)
|
|
328
328
|
return;
|
|
329
329
|
for (const tokenCase of tokenCases) {
|
|
330
330
|
this.emitTokenCase(tokenCase);
|
|
331
331
|
}
|
|
332
332
|
this.indent(() => {
|
|
333
|
-
const allHandled = this.emitDecodeTransformer(xfer, targetType, emitFinish, variableName);
|
|
333
|
+
const allHandled = this.emitDecodeTransformer(xfer, targetType, emitFinish, variableName, varGen);
|
|
334
334
|
if (!allHandled) {
|
|
335
335
|
this.emitLine("break;");
|
|
336
336
|
}
|
|
@@ -343,7 +343,7 @@ class SystemTextJsonCSharpRenderer extends CSharpRenderer_1.CSharpRenderer {
|
|
|
343
343
|
}
|
|
344
344
|
return this.emitTransformer(value, consumer, targetType, emitFinish);
|
|
345
345
|
}
|
|
346
|
-
emitDecodeTransformer(xfer, targetType, emitFinish, variableName = "value") {
|
|
346
|
+
emitDecodeTransformer(xfer, targetType, emitFinish, variableName = "value", varGen = { counter: 0 }) {
|
|
347
347
|
if (xfer instanceof Transformers_1.DecodingTransformer) {
|
|
348
348
|
const source = xfer.sourceType;
|
|
349
349
|
const converter = this.converterForType(targetType);
|
|
@@ -368,7 +368,7 @@ class SystemTextJsonCSharpRenderer extends CSharpRenderer_1.CSharpRenderer {
|
|
|
368
368
|
this.emitLine("var ", variableName, " = new List<", this.csType(targetType.items), ">();");
|
|
369
369
|
this.emitLine("while (reader.TokenType != JsonToken.EndArray)");
|
|
370
370
|
this.emitBlock(() => {
|
|
371
|
-
this.emitDecodeTransformer(xfer.itemTransformer, xfer.itemTargetType, (v) => this.emitLine(variableName, ".Add(", v, ");"), "arrayItem");
|
|
371
|
+
this.emitDecodeTransformer(xfer.itemTransformer, xfer.itemTargetType, (v) => this.emitLine(variableName, ".Add(", v, ");"), "arrayItem", varGen);
|
|
372
372
|
// FIXME: handle EOF
|
|
373
373
|
this.emitLine("reader.Read();");
|
|
374
374
|
});
|
|
@@ -385,22 +385,57 @@ class SystemTextJsonCSharpRenderer extends CSharpRenderer_1.CSharpRenderer {
|
|
|
385
385
|
if (nullTransformer !== undefined) {
|
|
386
386
|
this.emitTokenCase("Null");
|
|
387
387
|
this.indent(() => {
|
|
388
|
-
const allHandled = this.emitDecodeTransformer(nullTransformer, targetType, emitFinish, "null");
|
|
388
|
+
const allHandled = this.emitDecodeTransformer(nullTransformer, targetType, emitFinish, "null", varGen);
|
|
389
389
|
if (!allHandled) {
|
|
390
390
|
this.emitLine("break");
|
|
391
391
|
}
|
|
392
392
|
});
|
|
393
393
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
394
|
+
// Handle number (integer/double) union properly
|
|
395
|
+
if (xfer.integerTransformer !== undefined && xfer.doubleTransformer !== undefined) {
|
|
396
|
+
varGen.counter++;
|
|
397
|
+
const intTryVar = `intTryValue${varGen.counter}`;
|
|
398
|
+
varGen.counter++;
|
|
399
|
+
const intVar = `intValue${varGen.counter}`;
|
|
400
|
+
varGen.counter++;
|
|
401
|
+
const doubleVar = `doubleValue${varGen.counter}`;
|
|
402
|
+
this.emitTokenCase("Number");
|
|
403
|
+
this.indent(() => {
|
|
404
|
+
this.emitLine(`if (reader.TryGetInt64(out long ${intTryVar}))`);
|
|
405
|
+
this.emitBlock(() => {
|
|
406
|
+
const allHandled = this.emitDecodeTransformer(xfer.integerTransformer, targetType, emitFinish, intVar, varGen);
|
|
407
|
+
if (!allHandled) {
|
|
408
|
+
this.emitLine("break;");
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
this.emitLine("else");
|
|
412
|
+
this.emitBlock(() => {
|
|
413
|
+
const allHandled = this.emitDecodeTransformer(xfer.doubleTransformer, targetType, emitFinish, doubleVar, varGen);
|
|
414
|
+
if (!allHandled) {
|
|
415
|
+
this.emitLine("break;");
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
// Only one present, emit as before
|
|
422
|
+
if (xfer.integerTransformer !== undefined) {
|
|
423
|
+
varGen.counter++;
|
|
424
|
+
const intVar = `intValue${varGen.counter}`;
|
|
425
|
+
this.emitDecoderTransformerCase(["Number"], intVar, xfer.integerTransformer, targetType, emitFinish, varGen);
|
|
426
|
+
}
|
|
427
|
+
else if (xfer.doubleTransformer !== undefined) {
|
|
428
|
+
varGen.counter++;
|
|
429
|
+
const doubleVar = `doubleValue${varGen.counter}`;
|
|
430
|
+
this.emitDecoderTransformerCase(["Number"], doubleVar, xfer.doubleTransformer, targetType, emitFinish, varGen);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
this.emitDecoderTransformerCase(["True", "False"], "boolValue", xfer.boolTransformer, targetType, emitFinish, varGen);
|
|
399
434
|
this.emitDecoderTransformerCase(
|
|
400
435
|
// ["String", "Date"],
|
|
401
|
-
["String"], "stringValue", xfer.stringTransformer, targetType, emitFinish);
|
|
402
|
-
this.emitDecoderTransformerCase(["StartObject"], "objectValue", xfer.objectTransformer, targetType, emitFinish);
|
|
403
|
-
this.emitDecoderTransformerCase(["StartArray"], "arrayValue", xfer.arrayTransformer, targetType, emitFinish);
|
|
436
|
+
["String"], "stringValue", xfer.stringTransformer, targetType, emitFinish, varGen);
|
|
437
|
+
this.emitDecoderTransformerCase(["StartObject"], "objectValue", xfer.objectTransformer, targetType, emitFinish, varGen);
|
|
438
|
+
this.emitDecoderTransformerCase(["StartArray"], "arrayValue", xfer.arrayTransformer, targetType, emitFinish, varGen);
|
|
404
439
|
});
|
|
405
440
|
return false;
|
|
406
441
|
}
|