|
|
#!/usr/bin/env python
|
|
|
# encoding: utf-8
|
|
|
"""
|
|
|
A payload based version of page.
|
|
|
|
|
|
Authors:
|
|
|
|
|
|
* Brian Granger
|
|
|
* Fernando Perez
|
|
|
"""
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
# Copyright (C) 2008-2010 The IPython Development Team
|
|
|
#
|
|
|
# Distributed under the terms of the BSD License. The full license is in
|
|
|
# the file COPYING, distributed as part of this software.
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
# Imports
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
|
|
from IPython.core.interactiveshell import InteractiveShell
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
# 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.
|
|
|
"""
|
|
|
|
|
|
# Some routines may auto-compute start offsets incorrectly and pass a
|
|
|
# negative value. Offset to 0 for robustness.
|
|
|
start = max(0, start)
|
|
|
shell = InteractiveShell.instance()
|
|
|
payload = dict(
|
|
|
source='IPython.zmq.page.page',
|
|
|
data=strng,
|
|
|
start_line_number=start
|
|
|
)
|
|
|
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
|
|
|
|