Skip to content

Commit 0fb53ce

Browse files
authored
Merge pull request #72 from AnswerDotAI/html_classes
Html classes
2 parents 9d8a332 + c2cac3b commit 0fb53ce

File tree

2 files changed

+150
-96
lines changed

2 files changed

+150
-96
lines changed

execnb/shell.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from .nbio import *
3333
from .nbio import _dict2obj
3434

35+
3536
# %% auto 0
3637
__all__ = ['CaptureShell', 'format_exc', 'render_outputs', 'find_output', 'out_exec', 'out_stream', 'out_error', 'exec_nb',
3738
'SmartCompleter']
@@ -160,12 +161,13 @@ async def run_async(self:CaptureShell,
160161
def _pre(s, xtra=''): return f"<pre {xtra}><code>{escape(s)}</code></pre>"
161162
def _strip(s): return strip_ansi(escape(s))
162163

163-
def render_outputs(outputs, ansi_renderer=_strip, include_imgs=True, pygments=False):
164+
def render_outputs(outputs, ansi_renderer=_strip, include_imgs=True, pygments=False, md_tfm=noop, html_tfm=noop):
164165
try:
165166
from mistletoe import markdown, HTMLRenderer
166167
from mistletoe.contrib.pygments_renderer import PygmentsRenderer
167168
except ImportError: return print('mistletoe not found -- please install it')
168169
renderer = PygmentsRenderer if pygments else HTMLRenderer
170+
169171
def render_output(out):
170172
otype = out['output_type']
171173
if otype == 'stream':
@@ -176,9 +178,9 @@ def render_output(out):
176178
elif otype in ('display_data','execute_result'):
177179
data = out['data']
178180
_g = lambda t: ''.join(data[t]) if t in data else None
179-
if d := _g('text/html'): return d
181+
if d := _g('text/html'): return html_tfm(d)
180182
if d := _g('application/javascript'): return f'<script>{d}</script>'
181-
if d := _g('text/markdown'): return markdown(d, renderer=renderer)
183+
if d := _g('text/markdown'): return md_tfm(markdown(d, renderer=renderer))
182184
if d := _g('text/latex'): return f'<div class="math">${d}$</div>'
183185
if include_imgs:
184186
if d := _g('image/jpeg'): return f'<img src="data:image/jpeg;base64,{d}"/>'
@@ -273,7 +275,7 @@ def prettytb(self:CaptureShell,
273275
fname = fname if fname else self._fname
274276
_fence = '='*75
275277
cell_intro_str = f"While Executing Cell #{self._cell_idx}:" if self._cell_idx else "While Executing:"
276-
cell_str = f"\n{cell_intro_str}\n{format_exc(self.exc)}"
278+
cell_str = f"\n{cell_intro_str}\n{''.join(format_exc(self.exc))}"
277279
fname_str = f' in {fname}' if fname else ''
278280
return f"{type(self.exc).__name__}{fname_str}:\n{_fence}\n{cell_str}\n"
279281

nbs/02_shell.ipynb

Lines changed: 144 additions & 92 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)