3232from .nbio import *
3333from .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,
160161def _pre (s , xtra = '' ): return f"<pre { xtra } ><code>{ escape (s )} </code></pre>"
161162def _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
0 commit comments