|
@@ -38,6 +38,7 @@
|
|
|
#include "core/object/class_db.h"
|
|
|
#include "core/string/string_builder.h"
|
|
|
#include "core/templates/pair.h"
|
|
|
+#include "core/variant/variant_parser.h"
|
|
|
|
|
|
// helper stuff
|
|
|
|
|
@@ -638,6 +639,7 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
|
|
|
// I'm sorry for the \t mess
|
|
|
|
|
|
List<String> source;
|
|
|
+ VariantWriter writer;
|
|
|
|
|
|
source.push_back("[\n");
|
|
|
|
|
@@ -682,7 +684,12 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
|
|
|
source.push_back("\t\t\t\t\t\t\"name\": \"" + e->get().argument_names[i] + "\",\n");
|
|
|
source.push_back("\t\t\t\t\t\t\"type\": \"" + e->get().argument_types[i] + "\",\n");
|
|
|
source.push_back(String("\t\t\t\t\t\t\"has_default_value\": ") + (e->get().default_arguments.has(i) ? "true" : "false") + ",\n");
|
|
|
- source.push_back("\t\t\t\t\t\t\"default_value\": \"" + (e->get().default_arguments.has(i) ? (String)e->get().default_arguments[i] : "") + "\"\n");
|
|
|
+ String default_value;
|
|
|
+ if (e->get().default_arguments.has(i)) {
|
|
|
+ writer.write_to_string(e->get().default_arguments[i], default_value);
|
|
|
+ default_value = default_value.replace("\n", "").json_escape();
|
|
|
+ }
|
|
|
+ source.push_back("\t\t\t\t\t\t\"default_value\": \"" + default_value + "\"\n");
|
|
|
source.push_back(String("\t\t\t\t\t}") + ((i < e->get().argument_names.size() - 1) ? "," : "") + "\n");
|
|
|
}
|
|
|
source.push_back("\t\t\t\t]\n");
|
|
@@ -708,7 +715,12 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
|
|
|
source.push_back("\t\t\t\t\t\t\"name\": \"" + e->get().argument_names[i] + "\",\n");
|
|
|
source.push_back("\t\t\t\t\t\t\"type\": \"" + e->get().argument_types[i] + "\",\n");
|
|
|
source.push_back(String("\t\t\t\t\t\t\"has_default_value\": ") + (e->get().default_arguments.has(i) ? "true" : "false") + ",\n");
|
|
|
- source.push_back("\t\t\t\t\t\t\"default_value\": \"" + (e->get().default_arguments.has(i) ? (String)e->get().default_arguments[i] : "") + "\"\n");
|
|
|
+ String default_value;
|
|
|
+ if (e->get().default_arguments.has(i)) {
|
|
|
+ writer.write_to_string(e->get().default_arguments[i], default_value);
|
|
|
+ default_value = default_value.replace("\n", "").json_escape();
|
|
|
+ }
|
|
|
+ source.push_back("\t\t\t\t\t\t\"default_value\": \"" + default_value + "\"\n");
|
|
|
source.push_back(String("\t\t\t\t\t}") + ((i < e->get().argument_names.size() - 1) ? "," : "") + "\n");
|
|
|
}
|
|
|
source.push_back("\t\t\t\t]\n");
|
|
@@ -756,6 +768,8 @@ static void append_indented(StringBuilder &p_source, const char *p_text) {
|
|
|
}
|
|
|
|
|
|
static void write_builtin_method(StringBuilder &p_source, const MethodAPI &p_method) {
|
|
|
+ VariantWriter writer;
|
|
|
+
|
|
|
append_indented(p_source, vformat(R"("name": "%s",)", p_method.method_name));
|
|
|
append_indented(p_source, vformat(R"("return_type": "%s",)", p_method.return_type));
|
|
|
append_indented(p_source, vformat(R"("is_const": %s,)", p_method.is_const ? "true" : "false"));
|
|
@@ -771,7 +785,12 @@ static void write_builtin_method(StringBuilder &p_source, const MethodAPI &p_met
|
|
|
append_indented(p_source, vformat(R"("name": "%s",)", p_method.argument_names[i]));
|
|
|
append_indented(p_source, vformat(R"("type": "%s",)", p_method.argument_types[i]));
|
|
|
append_indented(p_source, vformat(R"("has_default_value": %s,)", p_method.default_arguments.has(i) ? "true" : "false"));
|
|
|
- append_indented(p_source, vformat(R"("default_value": "%s")", p_method.default_arguments.has(i) ? p_method.default_arguments[i].operator String() : ""));
|
|
|
+ String default_value;
|
|
|
+ if (p_method.default_arguments.has(i)) {
|
|
|
+ writer.write_to_string(p_method.default_arguments[i], default_value);
|
|
|
+ default_value = default_value.replace("\n", "").json_escape();
|
|
|
+ }
|
|
|
+ append_indented(p_source, vformat(R"("default_value": "%s")", default_value));
|
|
|
|
|
|
indent_level--;
|
|
|
append_indented(p_source, i < p_method.argument_count - 1 ? "}," : "}");
|