Skip to content

Commit 633a342

Browse files
committed
fix(picker): Always pick document
1 parent d6db43f commit 633a342

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/sphinxnotes/snippet/ext.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,11 @@ def on_doctree_resolved(app: Sphinx, doctree: nodes.document, docname: str) -> N
119119

120120
doc = []
121121
snippets = pick(app, doctree, docname)
122+
tags = []
122123
for s, n in snippets:
123124
# FIXME: Better filter logic.
124-
if extract_tags(s) not in allowed_tags:
125+
tags.append(extract_tags(s))
126+
if tags[-1] not in allowed_tags:
125127
continue
126128
tpath = [x.astext() for x in titlepath.resolve(app.env, docname, n)]
127129
if isinstance(s, Section):
@@ -144,7 +146,12 @@ def on_doctree_resolved(app: Sphinx, doctree: nodes.document, docname: str) -> N
144146
del cache[cache_key]
145147

146148
logger.debug(
147-
'[snippet] picked %s/%s snippetes in %s', len(doc), len(snippets), docname
149+
'[snippet] picked %s/%s snippets in %s, tags: %s, allowed tags: %s',
150+
len(doc),
151+
len(snippets),
152+
docname,
153+
tags,
154+
allowed_tags,
148155
)
149156

150157

src/sphinxnotes/snippet/picker.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,16 @@ def pick(
3535
"""
3636
# FIXME: Why doctree.source is always None?
3737
if not doctree.attributes.get('source'):
38-
logger.debug('Skip document without source')
38+
logger.debug('Skip document %s: no source', docname)
3939
return []
4040

4141
metadata = app.env.metadata.get(docname, {})
4242
if 'no-search' in metadata or 'nosearch' in metadata:
43-
logger.debug('Skip document with nosearch metadata')
43+
logger.debug('Skip document %s: have :no[-]search: metadata', docname)
4444
return []
4545

4646
# Walk doctree and pick snippets.
47+
4748
picker = SnippetPicker(doctree)
4849
doctree.walkabout(picker)
4950

@@ -83,13 +84,14 @@ def depart_section(self, node: nodes.section) -> None:
8384
section = self._sections.pop()
8485
assert section == node
8586

87+
# Always pick document.
88+
if len(self._sections) == 0:
89+
self.snippets.append((Document(self.document), node))
90+
return
8691
# Skip non-leaf section without content
8792
if self._is_empty_non_leaf_section(node):
8893
return
89-
if len(self._sections) == 0:
90-
self.snippets.append((Document(self.document), node))
91-
else:
92-
self.snippets.append((Section(node), node))
94+
self.snippets.append((Section(node), node))
9395

9496
def unknown_visit(self, node: nodes.Node) -> None:
9597
pass # Ignore any unknown node

0 commit comments

Comments
 (0)