diff options
| author | Rapptz <[email protected]> | 2019-06-30 18:59:19 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2019-06-30 18:59:19 -0400 |
| commit | ac00fcad771174090beacf2acfbd8af1a88108d0 (patch) | |
| tree | c93dcf500b4e1045bfe7d3ab0a6fb1b6280ff175 /docs/extensions/builder.py | |
| parent | Fix TeamMember.team typehinting (diff) | |
| download | discord.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.py | 46 |
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) |