Browse Source

[doc] engine-table: link module documentation if it exists

Martin Fischer 3 years ago
parent
commit
ca7f1a2da6
2 changed files with 24 additions and 1 deletions
  1. 5 1
      docs/admin/engines/configured_engines.rst
  2. 19 0
      docs/conf.py

+ 5 - 1
docs/admin/engines/configured_engines.rst

@@ -43,7 +43,11 @@ Explanation of the :ref:`general engine configuration` shown in the table
 
       * - `{{name}} <{{mod.about and mod.about.website}}>`_
         - ``!{{mod.shortcut}}``
-        - :origin:`{{mod.__name__}} <searx/engines/{{mod.__name__}}.py>`
+        - {%- if 'searx.engines.' + mod.__name__ in documented_modules %}
+          :py:mod:`~searx.engines.{{mod.__name__}}`
+          {%- else %}
+          :origin:`{{mod.__name__}} <searx/engines/{{mod.__name__}}.py>`
+          {%- endif %}
         - {{(mod.disabled and "y") or ""}}
           {%- if mod.about and  mod.about.language %}
           ({{mod.about.language | upper}})

+ 19 - 0
docs/conf.py

@@ -58,6 +58,25 @@ jinja_filters = {
     )
 }
 
+# Let the Jinja template in configured_engines.rst access documented_modules
+# to automatically link documentation for modules if it exists.
+def setup(app):
+    ENGINES_DOCNAME = 'admin/engines/configured_engines'
+
+    def before_read_docs(app, env, docnames):
+        assert ENGINES_DOCNAME in docnames
+        docnames.remove(ENGINES_DOCNAME)
+        docnames.append(ENGINES_DOCNAME)
+        # configured_engines must come last so that sphinx already has
+        # discovered the python module documentations
+
+    def source_read(app, docname, source):
+        if docname == ENGINES_DOCNAME:
+            jinja_contexts['searx']['documented_modules'] = app.env.domains['py'].modules
+
+    app.connect('env-before-read-docs', before_read_docs)
+    app.connect('source-read', source_read)
+
 # usage::   lorem :patch:`f373169` ipsum
 extlinks = {}