mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-01 21:13:56 +00:00
* Fix C/C++ Create<Type>Direct with sorted vectors If a struct has a key the vector has to be sorted. To sort the vector you can't use "const". * Changes due to code review * Improve code readability * Add generate of JSON schema to string to lib * option indent_step is supported * Remove unused variables * Fix break in test * Fix style to be consistent with rest of the code * [TS] Fix reserved words as arguments (#6955)
This commit is contained in:
@@ -48,7 +48,65 @@ class TsGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
TsGenerator(const Parser &parser, const std::string &path,
|
TsGenerator(const Parser &parser, const std::string &path,
|
||||||
const std::string &file_name)
|
const std::string &file_name)
|
||||||
: BaseGenerator(parser, path, file_name, "", ".", "ts") {}
|
: BaseGenerator(parser, path, file_name, "", ".", "ts") {
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
// List of keywords retrieved from here:
|
||||||
|
// https://github.com/microsoft/TypeScript/issues/2536
|
||||||
|
// One per line to ease comparisons to that list are easier
|
||||||
|
static const char *const keywords[] = {
|
||||||
|
"break",
|
||||||
|
"case",
|
||||||
|
"catch",
|
||||||
|
"class",
|
||||||
|
"const",
|
||||||
|
"continue",
|
||||||
|
"debugger",
|
||||||
|
"default",
|
||||||
|
"delete",
|
||||||
|
"do",
|
||||||
|
"else",
|
||||||
|
"enum",
|
||||||
|
"export",
|
||||||
|
"extends",
|
||||||
|
"false",
|
||||||
|
"finally",
|
||||||
|
"for",
|
||||||
|
"function",
|
||||||
|
"if",
|
||||||
|
"import",
|
||||||
|
"in",
|
||||||
|
"instanceof",
|
||||||
|
"new",
|
||||||
|
"null",
|
||||||
|
"return",
|
||||||
|
"super",
|
||||||
|
"switch",
|
||||||
|
"this",
|
||||||
|
"throw",
|
||||||
|
"true",
|
||||||
|
"try",
|
||||||
|
"typeof",
|
||||||
|
"var",
|
||||||
|
"void",
|
||||||
|
"while",
|
||||||
|
"with",
|
||||||
|
"as",
|
||||||
|
"implements",
|
||||||
|
"interface",
|
||||||
|
"let",
|
||||||
|
"package",
|
||||||
|
"private",
|
||||||
|
"protected",
|
||||||
|
"public",
|
||||||
|
"static",
|
||||||
|
"yield",
|
||||||
|
nullptr,
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto kw = keywords; *kw; kw++) keywords_.insert(*kw);
|
||||||
|
}
|
||||||
bool generate() {
|
bool generate() {
|
||||||
generateEnums();
|
generateEnums();
|
||||||
generateStructs();
|
generateStructs();
|
||||||
@@ -81,6 +139,12 @@ class TsGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::unordered_set<std::string> keywords_;
|
||||||
|
|
||||||
|
std::string EscapeKeyword(const std::string &name) const {
|
||||||
|
return keywords_.find(name) == keywords_.end() ? name : name + "_";
|
||||||
|
}
|
||||||
|
|
||||||
import_set imports_all_;
|
import_set imports_all_;
|
||||||
|
|
||||||
// Generate code for all enums.
|
// Generate code for all enums.
|
||||||
@@ -1581,10 +1645,13 @@ class TsGenerator : public BaseGenerator {
|
|||||||
allowNull && field.IsOptional());
|
allowNull && field.IsOptional());
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string GetArgName(const FieldDef &field) {
|
std::string GetArgName(const FieldDef &field) {
|
||||||
auto argname = MakeCamel(field.name, false);
|
auto argname = MakeCamel(field.name, false);
|
||||||
if (!IsScalar(field.value.type.base_type)) { argname += "Offset"; }
|
if (!IsScalar(field.value.type.base_type)) {
|
||||||
|
argname += "Offset";
|
||||||
|
} else {
|
||||||
|
argname = EscapeKeyword(argname);
|
||||||
|
}
|
||||||
return argname;
|
return argname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user