Skip to content

Commit d1a0cd2

Browse files
committed
Include Titles in FileItems
1 parent 4e83bb6 commit d1a0cd2

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

sphinx_external_toc/api.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@
1616
#: Pattern used to match URL items.
1717
URL_PATTERN: str = r".+://.*"
1818

19-
20-
class FileItem(str):
19+
@dataclass(**DC_SLOTS)
20+
class FileItem:
2121
"""A document path in a toctree list.
2222
2323
This should be in POSIX format (folders split by ``/``), relative to the
2424
source directory, and can be with or without an extension.
2525
"""
26-
26+
path: str = field(validator=[instance_of(str)])
27+
title: Optional[str] = field(default=None, validator=optional(instance_of(str)))
28+
29+
def __post_init__(self):
30+
validate_fields(self)
2731

2832
class GlobItem(str):
2933
"""A document glob in a toctree list."""

sphinx_external_toc/events.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,8 @@ def insert_toctrees(app: Sphinx, doctree: nodes.document) -> None:
251251
subnode["entries"].append((entry.title, entry.url))
252252

253253
elif isinstance(entry, FileItem):
254-
255-
child_doc_item = site_map[entry]
256-
docname = str(entry)
257-
title = child_doc_item.title
254+
docname = entry.path
255+
title = entry.title
258256

259257
docname = remove_suffix(docname, app.config.source_suffix)
260258

sphinx_external_toc/parsing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ def _parse_doc_item(
238238

239239
try:
240240
if link_keys == {FILE_KEY}:
241-
items.append(FileItem(item_data[FILE_KEY]))
241+
items.append(FileItem(item_data[FILE_KEY], item_data.get("title")))
242242
elif link_keys == {GLOB_KEY}:
243243
items.append(GlobItem(item_data[GLOB_KEY]))
244244
elif link_keys == {URL_KEY}:

0 commit comments

Comments
 (0)