|
5 | 5 | from . import translator
|
6 | 6 |
|
7 | 7 | import sphinx.environment
|
| 8 | +try: |
| 9 | + from sphinx.environment.adapters import toctree |
| 10 | +except ImportError: |
| 11 | + toctree = None |
| 12 | + |
8 | 13 | import sphinx.builders.html
|
9 | 14 | from docutils import nodes
|
10 | 15 | def setup(app):
|
@@ -93,6 +98,14 @@ def __call__(self, fn):
|
93 | 98 | old = getattr(self.obj, name)
|
94 | 99 | setattr(self.obj, name, lambda self_, *args, **kwargs: \
|
95 | 100 | fn(old, self_, *args, **kwargs))
|
| 101 | +if toctree: |
| 102 | + # 1.6 and above use a new toctree adapter object for processing rather |
| 103 | + # than functions on the BuildEnv & al |
| 104 | + @monkey(toctree.TocTree) |
| 105 | + def resolve(old_resolve, tree, docname, *args, **kwargs): |
| 106 | + if docname == tree.env.config.master_doc: |
| 107 | + return resolve_content_toctree(tree.env, docname, *args, **kwargs) |
| 108 | + return old_resolve(tree, docname, *args, **kwargs) |
96 | 109 |
|
97 | 110 | @monkey(sphinx.environment.BuildEnvironment)
|
98 | 111 | def resolve_toctree(old_resolve, self, docname, *args, **kwargs):
|
|
0 commit comments