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