Skip to content

Commit 936859d

Browse files
committed
refactoring
1 parent 27276cc commit 936859d

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

jupyter_sphinx/execute.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,21 @@ def run(self):
187187
self.assert_has_content()
188188
content = self.content
189189

190+
emphasize_linespec = self.options.get('emphasize-lines')
191+
if emphasize_linespec:
192+
try:
193+
nlines = len(content)
194+
hl_lines = parselinenos(emphasize_linespec, nlines)
195+
if any(i >= nlines for i in hl_lines):
196+
logger.warning(
197+
'Line number spec is out of range(1-{}): {}'.format(
198+
nlines, emphasize_linespec), location=location)
199+
hl_lines = [i + 1 for i in hl_lines if i < nlines]
200+
except ValueError as err:
201+
return [self.state.document.reporter.warning(err, line=self.lineno)]
202+
else:
203+
hl_lines = []
204+
190205
return [JupyterCellNode(
191206
'',
192207
docutils.nodes.literal_block(
@@ -196,10 +211,9 @@ def run(self):
196211
hide_output=('hide-output' in self.options),
197212
code_below=('code-below' in self.options),
198213
linenos=('linenos' in self.options),
199-
emphasize_lines=self.options.get('emphasize-lines'),
214+
emphasize_lines=hl_lines,
200215
raises=self.options.get('raises'),
201216
stderr=('stderr' in self.options),
202-
_location=location,
203217
)]
204218

205219

@@ -420,14 +434,8 @@ def apply(self):
420434
source['highlight_args'] = {'linenostart': linenostart}
421435
linenostart += nlines
422436

423-
emphasize_linespec = node['emphasize_lines']
424-
if emphasize_linespec:
425-
hl_lines = parselinenos(emphasize_linespec, nlines)
426-
if any(i >= nlines for i in hl_lines):
427-
logger.warning(
428-
'Line number spec is out of range(1-{}): {}'.format(
429-
nlines, emphasize_linespec), location=node['_location'])
430-
hl_lines = [i + 1 for i in hl_lines if i < nlines]
437+
hl_lines = node['emphasize_lines']
438+
if hl_lines:
431439
highlight_args = source.setdefault('highlight_args', {})
432440
highlight_args['hl_lines'] = hl_lines
433441

tests/test_execute.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,15 +185,26 @@ def test_emphasize_lines(doctree):
185185
.. jupyter-execute::
186186
:emphasize-lines: 1,3-5
187187
188+
1 + 1
189+
2 + 2
190+
3 + 3
191+
4 + 4
192+
5 + 5
193+
194+
.. jupyter-execute::
195+
:emphasize-lines: 2, 4
196+
188197
1 + 1
189198
2 + 2
190199
3 + 3
191200
4 + 4
192201
5 + 5
193202
'''
194203
tree = doctree(source)
195-
cell, = tree.traverse(JupyterCellNode)
196-
assert cell.attributes['emphasize_lines'] == '1,3-5'
204+
cell0, cell1 = tree.traverse(JupyterCellNode)
205+
206+
assert cell0.attributes['emphasize_lines'] == [1, 3, 4, 5]
207+
assert cell1.attributes['emphasize_lines'] == [2, 4]
197208

198209

199210
def test_execution_environment_carries_over(doctree):

0 commit comments

Comments
 (0)