Browse Source

makerst: Add descriptions to method qualifiers

This closes https://github.com/godotengine/godot-docs/issues/1753.

(cherry picked from commit c162a39c7b915dd8ff592e0ca4f6a55160643ec2)
Hugo Locurcio 5 years ago
parent
commit
78a6a57884
1 changed files with 18 additions and 1 deletions
  1. 18 1
      doc/tools/makerst.py

+ 18 - 1
doc/tools/makerst.py

@@ -565,6 +565,8 @@ def make_rst_class(class_def, state, dry_run, output_dir):  # type: (ClassDef, S
 
                 index += 1
 
+    f.write(make_footer())
+
 
 def escape_rst(text, until_pos=-1):  # type: (str) -> str
     # Escape \ character, otherwise it ends up as an escape character in rst
@@ -986,7 +988,10 @@ def make_method_signature(
     out += " **)**"
 
     if isinstance(method_def, MethodDef) and method_def.qualifiers is not None:
-        out += " " + method_def.qualifiers
+        # Use substitutions for abbreviations. This is used to display tooltips on hover.
+        # See `make_footer()` for descriptions.
+        for qualifier in method_def.qualifiers.split():
+            out += " |" + qualifier + "|"
 
     return ret_type, out
 
@@ -995,6 +1000,18 @@ def make_heading(title, underline):  # type: (str, str) -> str
     return title + "\n" + (underline * len(title)) + "\n\n"
 
 
+def make_footer():  # type: () -> str
+    # Generate reusable abbreviation substitutions.
+    # This way, we avoid bloating the generated rST with duplicate abbreviations.
+    # fmt: off
+    return (
+        ".. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`\n"
+        ".. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`\n"
+        ".. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`"
+    )
+    # fmt: on
+
+
 def make_url(link):  # type: (str) -> str
     match = GODOT_DOCS_PATTERN.search(link)
     if match: