aboutsummaryrefslogtreecommitdiff
path: root/docs/extensions/builder.py
diff options
context:
space:
mode:
authorRapptz <[email protected]>2019-06-30 18:59:19 -0400
committerRapptz <[email protected]>2019-06-30 18:59:19 -0400
commitac00fcad771174090beacf2acfbd8af1a88108d0 (patch)
treec93dcf500b4e1045bfe7d3ab0a6fb1b6280ff175 /docs/extensions/builder.py
parentFix TeamMember.team typehinting (diff)
downloaddiscord.py-ac00fcad771174090beacf2acfbd8af1a88108d0.tar.xz
discord.py-ac00fcad771174090beacf2acfbd8af1a88108d0.zip
Flatten genindex to not group names.
Also better width in the tables.
Diffstat (limited to 'docs/extensions/builder.py')
-rw-r--r--docs/extensions/builder.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/extensions/builder.py b/docs/extensions/builder.py
new file mode 100644
index 00000000..ec428d8f
--- /dev/null
+++ b/docs/extensions/builder.py
@@ -0,0 +1,46 @@
+from sphinx.builders.html import StandaloneHTMLBuilder
+from sphinx.environment.adapters.indexentries import IndexEntries
+
+class DPYStandaloneHTMLBuilder(StandaloneHTMLBuilder):
+ # This is mostly copy pasted from Sphinx.
+ def write_genindex(self) -> None:
+ # the total count of lines for each index letter, used to distribute
+ # the entries into two columns
+ genindex = IndexEntries(self.env).create_index(self, group_entries=False)
+ indexcounts = []
+ for _k, entries in genindex:
+ indexcounts.append(sum(1 + len(subitems)
+ for _, (_, subitems, _) in entries))
+
+ genindexcontext = {
+ 'genindexentries': genindex,
+ 'genindexcounts': indexcounts,
+ 'split_index': self.config.html_split_index,
+ }
+
+ if self.config.html_split_index:
+ self.handle_page('genindex', genindexcontext,
+ 'genindex-split.html')
+ self.handle_page('genindex-all', genindexcontext,
+ 'genindex.html')
+ for (key, entries), count in zip(genindex, indexcounts):
+ ctx = {'key': key, 'entries': entries, 'count': count,
+ 'genindexentries': genindex}
+ self.handle_page('genindex-' + key, ctx,
+ 'genindex-single.html')
+ else:
+ self.handle_page('genindex', genindexcontext, 'genindex.html')
+
+def get_builder(app):
+ """This is necessary because RTD injects their own for some reason."""
+ try:
+ original = app.registry.builders['readthedocs']
+ except KeyError:
+ return DPYStandaloneHTMLBuilder
+ else:
+ injected_mro = tuple(base if base is not StandaloneHTMLBuilder else DPYStandaloneHTMLBuilder
+ for base in original.mro()[1:])
+ return type(original.__name__, injected_mro, {'name': 'readthedocs'})
+
+def setup(app):
+ app.add_builder(get_builder(app), override=True)