display.py
82 lines
| 2.7 KiB
| text/x-python
|
PythonLexer
MinRK
|
r7946 | """Simple magics for display formats""" | ||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2012 The IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
# Our own packages | ||||
jus1tin
|
r23761 | from IPython.core.display import display, Javascript, Latex, SVG, HTML, Markdown | ||
MinRK
|
r7946 | from IPython.core.magic import ( | ||
Thomas Kluyver
|
r9399 | Magics, magics_class, cell_magic | ||
MinRK
|
r7946 | ) | ||
Sjoerd de Vries
|
r24112 | from IPython.core import magic_arguments | ||
MinRK
|
r7946 | |||
#----------------------------------------------------------------------------- | ||||
# Magic implementation classes | ||||
#----------------------------------------------------------------------------- | ||||
@magics_class | ||||
class DisplayMagics(Magics): | ||||
"""Magics for displaying various output types with literals | ||||
Jonathan Frederic
|
r22307 | |||
Defines javascript/latex/svg/html cell magics for writing | ||||
Mikhail Korobov
|
r10054 | blocks in those languages, to be rendered in the frontend. | ||
MinRK
|
r7946 | """ | ||
Jonathan Frederic
|
r22307 | |||
@cell_magic | ||||
def js(self, line, cell): | ||||
Matthias Bussonnier
|
r22310 | """Run the cell block of Javascript code | ||
Sjoerd de Vries
|
r24112 | |||
Matthias Bussonnier
|
r22310 | Alias of `%%javascript` | ||
""" | ||||
Jonathan Frederic
|
r22307 | self.javascript(line, cell) | ||
MinRK
|
r7946 | @cell_magic | ||
def javascript(self, line, cell): | ||||
"""Run the cell block of Javascript code""" | ||||
display(Javascript(cell)) | ||||
Jonathan Frederic
|
r22307 | |||
MinRK
|
r7946 | @cell_magic | ||
def latex(self, line, cell): | ||||
Jonathan Frederic
|
r21735 | """Render the cell as a block of latex | ||
Jonathan Frederic
|
r22307 | |||
Jonathan Frederic
|
r21738 | The subset of latex which is support depends on the implementation in | ||
Jonathan Frederic
|
r22307 | the client. In the Jupyter Notebook, this magic only renders the subset | ||
of latex defined by MathJax | ||||
Jonathan Frederic
|
r21735 | [here](https://docs.mathjax.org/en/v2.5-latest/tex.html).""" | ||
MinRK
|
r7946 | display(Latex(cell)) | ||
@cell_magic | ||||
def svg(self, line, cell): | ||||
"""Render the cell as an SVG literal""" | ||||
display(SVG(cell)) | ||||
MinRK
|
r9999 | |||
Sjoerd de Vries
|
r24112 | @magic_arguments.magic_arguments() | ||
@magic_arguments.argument( | ||||
'--isolated', action='store_true', default=False, | ||||
help="""Annotate the cell as 'isolated'. | ||||
Isolated cells are rendered inside their own <iframe> tag""" | ||||
) | ||||
MinRK
|
r9999 | @cell_magic | ||
def html(self, line, cell): | ||||
Mikhail Korobov
|
r10054 | """Render the cell as a block of HTML""" | ||
Sjoerd de Vries
|
r24112 | args = magic_arguments.parse_argstring(self.html, line) | ||
html = HTML(cell) | ||||
if args.isolated: | ||||
display(html, metadata={'text/html':{'isolated':True}}) | ||||
else: | ||||
display(html) | ||||
@cell_magic | ||||
Matti Remes
|
r23656 | def markdown(self, line, cell): | ||
"""Render the cell as Markdown text block""" | ||||
display(Markdown(cell)) | ||||