From 0e3fdd0eeac998974179fd48874a2d98dbf9af83 Mon Sep 17 00:00:00 2001 From: Marc Butler Date: Fri, 13 Mar 2020 06:10:30 +1100 Subject: [PATCH] Escape characters in jsonschema descriptions (#5644) * Escape JSON Schema comments * Add quotes to monster comment Thus exercising the JSON Schema comment escape support. --- src/idl_gen_json_schema.cpp | 7 ++++++- tests/MyGame/Example/Monster.cs | 2 +- tests/MyGame/Example/Monster.go | 2 +- tests/MyGame/Example/Monster.java | 2 +- tests/MyGame/Example/Monster.kt | 2 +- tests/MyGame/Example/Monster.lua | 2 +- tests/MyGame/Example/Monster.php | 2 +- tests/MyGame/Example/Monster.py | 2 +- .../generated_cpp17/monster_test_generated.h | 2 +- tests/monster_test.bfbs | Bin 12176 -> 12176 bytes tests/monster_test.fbs | 2 +- tests/monster_test.schema.json | 2 +- tests/monster_test_bfbs_generated.h | 6 +++--- tests/monster_test_generated.h | 2 +- tests/monster_test_generated.js | 2 +- tests/monster_test_generated.lobster | 2 +- tests/monster_test_generated.rs | 2 +- tests/monster_test_generated.ts | 2 +- ...onster_test_my_game.example_generated.dart | 2 +- 19 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/idl_gen_json_schema.cpp b/src/idl_gen_json_schema.cpp index ecdb587be..a1d0704dd 100644 --- a/src/idl_gen_json_schema.cpp +++ b/src/idl_gen_json_schema.cpp @@ -155,7 +155,12 @@ class JsonSchemaGenerator : public BaseGenerator { comment.append(*comment_line); } 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\" : {"; diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs index 2faa6d7c6..8531b14a8 100644 --- a/tests/MyGame/Example/Monster.cs +++ b/tests/MyGame/Example/Monster.cs @@ -9,7 +9,7 @@ using global::System; using global::System.Collections.Generic; using global::FlatBuffers; -/// an example documentation comment: monster object +/// an example documentation comment: "monster object" public struct Monster : IFlatbufferObject { private Table __p; diff --git a/tests/MyGame/Example/Monster.go b/tests/MyGame/Example/Monster.go index 7ef41e36a..7db88a9c1 100644 --- a/tests/MyGame/Example/Monster.go +++ b/tests/MyGame/Example/Monster.go @@ -8,7 +8,7 @@ import ( MyGame "MyGame" ) -/// an example documentation comment: monster object +/// an example documentation comment: "monster object" type MonsterT struct { Pos *Vec3T Mana int16 diff --git a/tests/MyGame/Example/Monster.java b/tests/MyGame/Example/Monster.java index 465d68a47..d1d663982 100644 --- a/tests/MyGame/Example/Monster.java +++ b/tests/MyGame/Example/Monster.java @@ -9,7 +9,7 @@ import com.google.flatbuffers.*; @SuppressWarnings("unused") /** - * an example documentation comment: monster object + * an example documentation comment: "monster object" */ public final class Monster extends Table { public static void ValidateVersion() { Constants.FLATBUFFERS_1_11_1(); } diff --git a/tests/MyGame/Example/Monster.kt b/tests/MyGame/Example/Monster.kt index b284c7acf..14552734b 100644 --- a/tests/MyGame/Example/Monster.kt +++ b/tests/MyGame/Example/Monster.kt @@ -7,7 +7,7 @@ import kotlin.math.sign import com.google.flatbuffers.* /** - * an example documentation comment: monster object + * an example documentation comment: "monster object" */ @Suppress("unused") @ExperimentalUnsignedTypes diff --git a/tests/MyGame/Example/Monster.lua b/tests/MyGame/Example/Monster.lua index 07f69fcbf..8f82d9de9 100644 --- a/tests/MyGame/Example/Monster.lua +++ b/tests/MyGame/Example/Monster.lua @@ -4,7 +4,7 @@ local flatbuffers = require('flatbuffers') --- an example documentation comment: monster object +-- an example documentation comment: "monster object" local Monster = {} -- the module local Monster_mt = {} -- the class metatable diff --git a/tests/MyGame/Example/Monster.php b/tests/MyGame/Example/Monster.php index 6dbbde2e3..a07ffcc63 100644 --- a/tests/MyGame/Example/Monster.php +++ b/tests/MyGame/Example/Monster.php @@ -8,7 +8,7 @@ use \Google\FlatBuffers\Table; use \Google\FlatBuffers\ByteBuffer; use \Google\FlatBuffers\FlatBufferBuilder; -/// an example documentation comment: monster object +/// an example documentation comment: "monster object" class Monster extends Table { /** diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py index ff288d7f6..641d038cb 100644 --- a/tests/MyGame/Example/Monster.py +++ b/tests/MyGame/Example/Monster.py @@ -6,7 +6,7 @@ import flatbuffers from flatbuffers.compat import import_numpy np = import_numpy() -# an example documentation comment: monster object +# an example documentation comment: "monster object" class Monster(object): __slots__ = ['_tab'] diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index 928d8dd09..359fd1a9b 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -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 { typedef MonsterT NativeTableType; typedef MonsterBuilder Builder; diff --git a/tests/monster_test.bfbs b/tests/monster_test.bfbs index 51af3549649e5f51eafb335308b2accc33831d7e..84f24470849b882d5404bc6d5ce085751d9e7a59 100644 GIT binary patch delta 35 qcmbObKOugD0}rF|WJew~0j1phyyBA7B8B{ ReferrableBuilder<'a, 'b> { pub enum MonsterOffset {} #[derive(Copy, Clone, Debug, PartialEq)] -/// an example documentation comment: monster object +/// an example documentation comment: "monster object" pub struct Monster<'a> { pub _tab: flatbuffers::Table<'a>, } diff --git a/tests/monster_test_generated.ts b/tests/monster_test_generated.ts index 3ac617854..414bedbba 100644 --- a/tests/monster_test_generated.ts +++ b/tests/monster_test_generated.ts @@ -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 */ diff --git a/tests/monster_test_my_game.example_generated.dart b/tests/monster_test_my_game.example_generated.dart index 427b5e91a..2ad2c9520 100644 --- a/tests/monster_test_my_game.example_generated.dart +++ b/tests/monster_test_my_game.example_generated.dart @@ -717,7 +717,7 @@ class ReferrableObjectBuilder extends fb.ObjectBuilder { return fbBuilder.finish(offset, fileIdentifier); } } -/// an example documentation comment: monster object +/// an example documentation comment: "monster object" class Monster { Monster._(this._bc, this._bcOffset); factory Monster(List bytes) {