Skip to content

Commit 7480bdb

Browse files
committed
feat: Impl code snippet
1 parent 02dd9e7 commit 7480bdb

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/sphinxnotes/snippet/ext.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def extract_excerpt(s: Snippet) -> str:
5656
elif isinstance(s, Section) and s.title is not None:
5757
return '[' + s.title.text + ']'
5858
elif isinstance(s, Code):
59-
excerpt = s.desc.astext() if s.desc else s.caption or '' # FIXME
60-
return '`' + s.language + ':' + excerpt + '`'
59+
excerpt = s.desc.astext() if isinstance(s.desc, nodes.paragraph) else s.desc
60+
return '`' + s.lang + ':' + excerpt + '`'
6161
return ''
6262

6363

@@ -66,10 +66,10 @@ def extract_keywords(s: Snippet) -> list[str]:
6666
if isinstance(s, WithTitle) and s.title is not None:
6767
keywords.extend(extractor.extract(s.title.text, strip_stopwords=False))
6868
if isinstance(s, Code):
69-
if s.desc:
69+
if isinstance(s.desc, nodes.paragraph):
7070
keywords.extend(extractor.extract(s.desc.astext(), strip_stopwords=False))
71-
if s.caption:
72-
keywords.extend(extractor.extract(s.caption, strip_stopwords=False))
71+
else:
72+
keywords.extend(extractor.extract(s.desc, strip_stopwords=False))
7373
return keywords
7474

7575

src/sphinxnotes/snippet/snippets.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,14 @@ def __init__(self, node: nodes.Node) -> None:
9494
self.text = node.astext()
9595

9696

97-
class Code(Text):
97+
class Code(Snippet):
9898
#: Language of code block
9999
lang: str
100100
#: Description of code block, usually the text of preceding paragraph
101101
desc: nodes.paragraph | str
102102

103103
def __init__(self, node: nodes.literal_block) -> None:
104104
assert isinstance(node, nodes.literal_block)
105-
super().__init__(node)
106105

107106
self.lang = node['language']
108107

@@ -121,11 +120,14 @@ def __init__(self, node: nodes.literal_block) -> None:
121120
# of the code block. This convention also applies to the code,
122121
# code-block, sourcecode directive.
123122
self.desc = para
123+
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
124+
super().__init__(para, node)
124125
elif caption := node.get('caption'):
125126
# Use caption as descritpion.
126127
# In sphinx, code-block, sourcecode and code may have caption option.
127128
# https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-code-block
128129
self.desc = caption
130+
super().__init__(node)
129131
else:
130132
raise ValueError('Lack of description: preceding paragraph or caption')
131133

0 commit comments

Comments
 (0)