diff options
Diffstat (limited to 'editor/doc_data.cpp')
-rw-r--r-- | editor/doc_data.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/editor/doc_data.cpp b/editor/doc_data.cpp index 53641da0e9..54acbe9559 100644 --- a/editor/doc_data.cpp +++ b/editor/doc_data.cpp @@ -662,18 +662,19 @@ void DocData::generate(bool p_basic_types) { } } - //built in script reference + // Built-in script reference. + // We only add a doc entry for languages which actually define any built-in + // methods or constants. { for (int i = 0; i < ScriptServer::get_language_count(); i++) { ScriptLanguage *lang = ScriptServer::get_language(i); String cname = "@" + lang->get_name(); - class_list[cname] = ClassDoc(); - ClassDoc &c = class_list[cname]; + ClassDoc c; c.name = cname; + // Get functions. List<MethodInfo> minfo; - lang->get_public_functions(&minfo); for (List<MethodInfo>::Element *E = minfo.front(); E; E = E->next()) { @@ -706,6 +707,7 @@ void DocData::generate(bool p_basic_types) { c.methods.push_back(md); } + // Get constants. List<Pair<String, Variant>> cinfo; lang->get_public_constants(&cinfo); @@ -715,6 +717,13 @@ void DocData::generate(bool p_basic_types) { cd.value = E->get().second; c.constants.push_back(cd); } + + // Skip adding the lang if it doesn't expose anything (e.g. C#). + if (c.methods.empty() && c.constants.empty()) { + continue; + } + + class_list[cname] = c; } } } @@ -881,9 +890,14 @@ Error DocData::_load(Ref<XMLParser> parser) { String name3 = parser->get_node_name(); if (name3 == "link") { + TutorialDoc tutorial; + if (parser->has_attribute("title")) { + tutorial.title = parser->get_attribute_value("title"); + } parser->read(); if (parser->get_node_type() == XMLParser::NODE_TEXT) { - c.tutorials.push_back(parser->get_node_data().strip_edges()); + tutorial.link = parser->get_node_data().strip_edges(); + c.tutorials.push_back(tutorial); } } else { ERR_FAIL_V_MSG(ERR_FILE_CORRUPT, "Invalid tag in doc file: " + name3 + "."); @@ -1055,7 +1069,9 @@ Error DocData::save_classes(const String &p_default_path, const Map<String, Stri _write_string(f, 1, "<tutorials>"); for (int i = 0; i < c.tutorials.size(); i++) { - _write_string(f, 2, "<link>" + c.tutorials.get(i).xml_escape() + "</link>"); + TutorialDoc tutorial = c.tutorials.get(i); + String title_attribute = (!tutorial.title.empty()) ? " title=\"" + tutorial.title.xml_escape() + "\"" : ""; + _write_string(f, 2, "<link" + title_attribute + ">" + tutorial.link.xml_escape() + "</link>"); } _write_string(f, 1, "</tutorials>"); |