Skip to content

Commit a982248

Browse files
authored
🐛 FIX: Remove docname_join use (#15)
This is not required, because the docnames are all relative to the source folder, rather than to the file their `toctree` is in.
1 parent e71ac62 commit a982248

File tree

6 files changed

+78
-4
lines changed

6 files changed

+78
-4
lines changed

sphinx_external_toc/api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
""" """
2-
from collections.abc import MutableMapping
2+
from collections.abc import Mapping, MutableMapping
33
from pathlib import Path
44
from typing import Any, Dict, Iterator, List, Optional, Sequence, Set, Tuple, Union
55

@@ -160,6 +160,9 @@ def parse_toc_yaml(path: Union[str, Path], encoding: str = "utf8") -> SiteMap:
160160

161161
def parse_toc_data(data: Dict[str, Any]) -> SiteMap:
162162
"""Parse a dictionary of the ToC."""
163+
if not isinstance(data, Mapping):
164+
MalformedError(f"toc is not a mapping: {type(data)}")
165+
163166
defaults: Dict[str, Any] = data.get("defaults", {})
164167

165168
doc_item, docs_list = _parse_doc_item(data, defaults, "/", file_key="root")

sphinx_external_toc/events.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from sphinx.environment import BuildEnvironment
1111
from sphinx.errors import ExtensionError
1212
from sphinx.transforms import SphinxTransform
13-
from sphinx.util import docname_join, logging
13+
from sphinx.util import logging
1414
from sphinx.util.docutils import SphinxDirective
1515
from sphinx.util.matching import Matcher, patfilter, patmatch
1616

@@ -217,7 +217,7 @@ def insert_toctrees(app: Sphinx, doctree: nodes.document) -> None:
217217
elif isinstance(entry, FileItem):
218218

219219
child_doc_item = site_map[entry]
220-
docname = docname_join(app.env.docname, str(entry))
220+
docname = str(entry)
221221
title = child_doc_item.title
222222

223223
# remove any suffixes
@@ -239,7 +239,7 @@ def insert_toctrees(app: Sphinx, doctree: nodes.document) -> None:
239239
subnode["includefiles"].append(docname)
240240

241241
elif isinstance(entry, GlobItem):
242-
patname = docname_join(app.env.docname, str(entry))
242+
patname = str(entry)
243243
docnames = sorted(patfilter(all_docnames, patname))
244244
for docname in docnames:
245245
all_docnames.remove(docname) # don't include it again

tests/_toc_files/nested.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
root: intro
2+
sections:
3+
- file: folder/doc1
4+
- file: folder/doc2
5+
- file: folder/doc3
6+
sections:
7+
- file: folder/subfolder/doc4
8+
- glob: folder/globfolder/*
9+
meta:
10+
create_files:
11+
- folder/globfolder/glob1
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
meta:
2+
create_files:
3+
- folder/globfolder/glob1
4+
root: intro
5+
sections:
6+
- file: folder/doc1
7+
- file: folder/doc2
8+
- file: folder/doc3
9+
sections:
10+
- file: folder/subfolder/doc4
11+
- glob: folder/globfolder/*
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
_meta:
2+
create_files:
3+
- folder/globfolder/glob1
4+
_root: intro
5+
folder/doc1:
6+
docname: folder/doc1
7+
parts: []
8+
title: null
9+
folder/doc2:
10+
docname: folder/doc2
11+
parts: []
12+
title: null
13+
folder/doc3:
14+
docname: folder/doc3
15+
parts:
16+
- caption: null
17+
numbered: false
18+
reversed: false
19+
sections:
20+
- folder/subfolder/doc4
21+
- folder/globfolder/*
22+
titlesonly: true
23+
title: null
24+
folder/subfolder/doc4:
25+
docname: folder/subfolder/doc4
26+
parts: []
27+
title: null
28+
intro:
29+
docname: intro
30+
parts:
31+
- caption: null
32+
numbered: false
33+
reversed: false
34+
sections:
35+
- folder/doc1
36+
- folder/doc2
37+
- folder/doc3
38+
titlesonly: true
39+
title: null
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
- _toc.yml
2+
- folder
3+
- folder/doc1.rst
4+
- folder/doc2.rst
5+
- folder/doc3.rst
6+
- folder/globfolder
7+
- folder/globfolder/glob1.rst
8+
- folder/subfolder
9+
- folder/subfolder/doc4.rst
10+
- intro.rst

0 commit comments

Comments
 (0)