MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _generate_docs

Method _generate_docs

modules/gdscript/editor/gdscript_docgen.cpp:334–597  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332}
333
334void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_class) {
335 p_script->_clear_doc();
336
337 DocData::ClassDoc &doc = p_script->doc;
338
339 doc.is_script_doc = true;
340
341 if (p_script->local_name == StringName()) {
342 // This is an outer unnamed class.
343 doc.name = _get_script_name(p_script->get_script_path());
344 } else {
345 // This is an inner or global outer class.
346 doc.name = p_script->local_name;
347 if (p_script->_owner) {
348 doc.name = p_script->_owner->doc.name + "." + doc.name;
349 }
350 }
351
352 doc.script_path = p_script->get_script_path();
353
354 if (p_script->base.is_valid() && p_script->base->is_valid()) {
355 if (!p_script->base->doc.name.is_empty()) {
356 doc.inherits = p_script->base->doc.name;
357 } else {
358 doc.inherits = p_script->base->get_instance_base_type();
359 }
360 } else if (p_script->native.is_valid()) {
361 doc.inherits = p_script->native->get_name();
362 }
363
364 doc.brief_description = p_class->doc_data.brief;
365 doc.description = p_class->doc_data.description;
366 for (const Pair<String, String> &p : p_class->doc_data.tutorials) {
367 DocData::TutorialDoc td;
368 td.title = p.first;
369 td.link = p.second;
370 doc.tutorials.append(td);
371 }
372 doc.is_deprecated = p_class->doc_data.is_deprecated;
373 doc.deprecated_message = p_class->doc_data.deprecated_message;
374 doc.is_experimental = p_class->doc_data.is_experimental;
375 doc.experimental_message = p_class->doc_data.experimental_message;
376
377 for (const GDP::ClassNode::Member &member : p_class->members) {
378 switch (member.type) {
379 case GDP::ClassNode::Member::CLASS: {
380 const GDP::ClassNode *inner_class = member.m_class;
381 const StringName &class_name = inner_class->identifier->name;
382
383 p_script->member_lines[class_name] = inner_class->start_line;
384
385 // Recursively generate inner class docs.
386 // Needs inner GDScripts to exist: previously generated in GDScriptCompiler::make_scripts().
387 GDScriptDocGen::_generate_docs(*p_script->subclasses[class_name], inner_class);
388 } break;
389
390 case GDP::ClassNode::Member::CONSTANT: {
391 const GDP::ConstantNode *m_const = member.constant;

Callers

nothing calls this directly

Calls 12

_clear_docMethod · 0.80
get_script_pathMethod · 0.80
_add_docMethod · 0.80
StringNameClass · 0.50
is_validMethod · 0.45
is_emptyMethod · 0.45
get_nameMethod · 0.45
appendMethod · 0.45
get_datatypeMethod · 0.45
push_backMethod · 0.45
is_varargMethod · 0.45

Tested by

no test coverage detected