payloadpage.py
50 lines
| 1.4 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2830 | # encoding: utf-8 | ||
MinRK
|
r16586 | """A payload based version of page.""" | ||
Brian Granger
|
r2830 | |||
MinRK
|
r16586 | # Copyright (c) IPython Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||||
Brian Granger
|
r2830 | |||
MinRK
|
r16586 | from IPython.core.getipython import get_ipython | ||
Brian Granger
|
r2830 | |||
#----------------------------------------------------------------------------- | ||||
# Classes and functions | ||||
#----------------------------------------------------------------------------- | ||||
MinRK
|
r16586 | def page(strng, start=0, screen_lines=0, pager_cmd=None): | ||
Brian Granger
|
r2830 | """Print a string, piping through a pager. | ||
This version ignores the screen_lines and pager_cmd arguments and uses | ||||
IPython's payload system instead. | ||||
Fernando Perez
|
r3011 | |||
Parameters | ||||
---------- | ||||
MinRK
|
r16586 | strng : str or mime-dict | ||
Text to page, or a mime-type keyed dict of already formatted data. | ||||
Fernando Perez
|
r3011 | |||
start : int | ||||
Starting line at which to place the display. | ||||
Brian Granger
|
r2830 | """ | ||
# Some routines may auto-compute start offsets incorrectly and pass a | ||||
# negative value. Offset to 0 for robustness. | ||||
start = max(0, start) | ||||
MinRK
|
r16586 | shell = get_ipython() | ||
if isinstance(strng, dict): | ||||
data = strng | ||||
else: | ||||
data = {'text/plain' : strng} | ||||
Brian Granger
|
r2830 | payload = dict( | ||
MinRK
|
r11839 | source='page', | ||
MinRK
|
r16586 | data=data, | ||
Fernando Perez
|
r3011 | text=strng, | ||
MinRK
|
r16586 | start=start, | ||
screen_lines=screen_lines, | ||||
Fernando Perez
|
r3011 | ) | ||
Brian Granger
|
r2830 | shell.payload_manager.write_payload(payload) | ||
Fernando Perez
|
r3011 | |||
Brian Granger
|
r2830 | def install_payload_page(): | ||
"""Install this version of page as IPython.core.page.page.""" | ||||
from IPython.core import page as corepage | ||||
corepage.page = page | ||||