Escape characters in jsonschema descriptions (#5644)

* Escape JSON Schema comments

* Add quotes to monster comment

Thus exercising the JSON Schema comment escape support.
This commit is contained in:
Marc Butler
2020-03-13 06:10:30 +11:00
committed by GitHub
parent 45a2b07cbd
commit 0e3fdd0eea
19 changed files with 25 additions and 20 deletions

View File

@@ -155,7 +155,12 @@ class JsonSchemaGenerator : public BaseGenerator {
comment.append(*comment_line); comment.append(*comment_line);
} }
if (comment.size() > 0) { if (comment.size() > 0) {
code_ += " \"description\" : \"" + comment + "\","; std::string description;
if (!EscapeString(comment.c_str(), comment.length(), &description, true,
true)) {
return false;
}
code_ += " \"description\" : " + description + ",";
} }
code_ += " \"properties\" : {"; code_ += " \"properties\" : {";

View File

@@ -9,7 +9,7 @@ using global::System;
using global::System.Collections.Generic; using global::System.Collections.Generic;
using global::FlatBuffers; using global::FlatBuffers;
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
public struct Monster : IFlatbufferObject public struct Monster : IFlatbufferObject
{ {
private Table __p; private Table __p;

View File

@@ -8,7 +8,7 @@ import (
MyGame "MyGame" MyGame "MyGame"
) )
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
type MonsterT struct { type MonsterT struct {
Pos *Vec3T Pos *Vec3T
Mana int16 Mana int16

View File

@@ -9,7 +9,7 @@ import com.google.flatbuffers.*;
@SuppressWarnings("unused") @SuppressWarnings("unused")
/** /**
* an example documentation comment: monster object * an example documentation comment: "monster object"
*/ */
public final class Monster extends Table { public final class Monster extends Table {
public static void ValidateVersion() { Constants.FLATBUFFERS_1_11_1(); } public static void ValidateVersion() { Constants.FLATBUFFERS_1_11_1(); }

View File

@@ -7,7 +7,7 @@ import kotlin.math.sign
import com.google.flatbuffers.* import com.google.flatbuffers.*
/** /**
* an example documentation comment: monster object * an example documentation comment: "monster object"
*/ */
@Suppress("unused") @Suppress("unused")
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes

View File

@@ -4,7 +4,7 @@
local flatbuffers = require('flatbuffers') local flatbuffers = require('flatbuffers')
-- an example documentation comment: monster object -- an example documentation comment: "monster object"
local Monster = {} -- the module local Monster = {} -- the module
local Monster_mt = {} -- the class metatable local Monster_mt = {} -- the class metatable

View File

@@ -8,7 +8,7 @@ use \Google\FlatBuffers\Table;
use \Google\FlatBuffers\ByteBuffer; use \Google\FlatBuffers\ByteBuffer;
use \Google\FlatBuffers\FlatBufferBuilder; use \Google\FlatBuffers\FlatBufferBuilder;
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
class Monster extends Table class Monster extends Table
{ {
/** /**

View File

@@ -6,7 +6,7 @@ import flatbuffers
from flatbuffers.compat import import_numpy from flatbuffers.compat import import_numpy
np = import_numpy() np = import_numpy()
# an example documentation comment: monster object # an example documentation comment: "monster object"
class Monster(object): class Monster(object):
__slots__ = ['_tab'] __slots__ = ['_tab']

View File

@@ -1043,7 +1043,7 @@ struct MonsterT : public flatbuffers::NativeTable {
} }
}; };
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef MonsterT NativeTableType; typedef MonsterT NativeTableType;
typedef MonsterBuilder Builder; typedef MonsterBuilder Builder;

Binary file not shown.

View File

@@ -66,7 +66,7 @@ table Referrable {
id:ulong(key, hash:"fnv1a_64"); id:ulong(key, hash:"fnv1a_64");
} }
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
table Monster { table Monster {
pos:Vec3 (id: 0); pos:Vec3 (id: 0);
hp:short = 100 (id: 2); hp:short = 100 (id: 2);

View File

@@ -147,7 +147,7 @@
}, },
"MyGame_Example_Monster" : { "MyGame_Example_Monster" : {
"type" : "object", "type" : "object",
"description" : " an example documentation comment: monster object", "description" : " an example documentation comment: \"monster object\"",
"properties" : { "properties" : {
"pos" : { "pos" : {
"$ref" : "#/definitions/MyGame_Example_Vec3" "$ref" : "#/definitions/MyGame_Example_Vec3"

View File

@@ -167,10 +167,10 @@ struct MonsterBinarySchema {
0x02,0x00,0x00,0x00,0x75,0x38,0x00,0x00,0x5E,0xDD,0xFF,0xFF,0x00,0x00,0x04,0x00,0x18,0x00,0x00,0x00, 0x02,0x00,0x00,0x00,0x75,0x38,0x00,0x00,0x5E,0xDD,0xFF,0xFF,0x00,0x00,0x04,0x00,0x18,0x00,0x00,0x00,
0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0xDC,0xFF,0xFF,0x00,0x00,0x00,0x03, 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0xDC,0xFF,0xFF,0x00,0x00,0x00,0x03,
0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00,0xDA,0xDD,0xFF,0xFF,0x18,0x01,0x00,0x00,0x4C,0x00,0x00,0x00, 0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00,0xDA,0xDD,0xFF,0xFF,0x18,0x01,0x00,0x00,0x4C,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x31,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,
0x20,0x61,0x6E,0x20,0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74, 0x20,0x61,0x6E,0x20,0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,
0x61,0x74,0x69,0x6F,0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x74,0x3A,0x20,0x6D,0x6F,0x6E,0x73,0x74, 0x61,0x74,0x69,0x6F,0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x74,0x3A,0x20,0x22,0x6D,0x6F,0x6E,0x73,
0x65,0x72,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0xC0,0x01,0x00,0x00, 0x74,0x65,0x72,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x22,0x00,0x31,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,
0x1C,0x02,0x00,0x00,0x7C,0x02,0x00,0x00,0xD4,0x02,0x00,0x00,0xB0,0x06,0x00,0x00,0x90,0x17,0x00,0x00, 0x1C,0x02,0x00,0x00,0x7C,0x02,0x00,0x00,0xD4,0x02,0x00,0x00,0xB0,0x06,0x00,0x00,0x90,0x17,0x00,0x00,
0xEC,0x14,0x00,0x00,0x04,0x0C,0x00,0x00,0x78,0x18,0x00,0x00,0xD8,0x19,0x00,0x00,0xF8,0x17,0x00,0x00, 0xEC,0x14,0x00,0x00,0x04,0x0C,0x00,0x00,0x78,0x18,0x00,0x00,0xD8,0x19,0x00,0x00,0xF8,0x17,0x00,0x00,
0x48,0x1A,0x00,0x00,0x2C,0x19,0x00,0x00,0x34,0x04,0x00,0x00,0x6C,0x0A,0x00,0x00,0xB0,0x1A,0x00,0x00, 0x48,0x1A,0x00,0x00,0x2C,0x19,0x00,0x00,0x34,0x04,0x00,0x00,0x6C,0x0A,0x00,0x00,0xB0,0x1A,0x00,0x00,

View File

@@ -1269,7 +1269,7 @@ inline bool operator!=(const MonsterT &lhs, const MonsterT &rhs) {
} }
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef MonsterT NativeTableType; typedef MonsterT NativeTableType;
typedef MonsterBuilder Builder; typedef MonsterBuilder Builder;

View File

@@ -985,7 +985,7 @@ MyGame.Example.Referrable.createReferrable = function(builder, id) {
} }
/** /**
* an example documentation comment: monster object * an example documentation comment: "monster object"
* *
* @constructor * @constructor
*/ */

View File

@@ -208,7 +208,7 @@ struct ReferrableBuilder:
def end(): def end():
return b_.EndObject() return b_.EndObject()
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
class Monster : flatbuffers_handle class Monster : flatbuffers_handle
def pos(): def pos():
let o = buf_.flatbuffers_field_struct(pos_, 4) let o = buf_.flatbuffers_field_struct(pos_, 4)

View File

@@ -1028,7 +1028,7 @@ impl<'a: 'b, 'b> ReferrableBuilder<'a, 'b> {
pub enum MonsterOffset {} pub enum MonsterOffset {}
#[derive(Copy, Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq)]
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
pub struct Monster<'a> { pub struct Monster<'a> {
pub _tab: flatbuffers::Table<'a>, pub _tab: flatbuffers::Table<'a>,
} }

View File

@@ -838,7 +838,7 @@ static createReferrable(builder:flatbuffers.Builder, id:flatbuffers.Long):flatbu
} }
} }
/** /**
* an example documentation comment: monster object * an example documentation comment: "monster object"
* *
* @constructor * @constructor
*/ */

View File

@@ -717,7 +717,7 @@ class ReferrableObjectBuilder extends fb.ObjectBuilder {
return fbBuilder.finish(offset, fileIdentifier); return fbBuilder.finish(offset, fileIdentifier);
} }
} }
/// an example documentation comment: monster object /// an example documentation comment: "monster object"
class Monster { class Monster {
Monster._(this._bc, this._bcOffset); Monster._(this._bc, this._bcOffset);
factory Monster(List<int> bytes) { factory Monster(List<int> bytes) {