##// END OF EJS Templates
Provide html support for page() in the payload version....
Fernando Perez -
Show More
@@ -20,30 +20,77 b' Authors:'
20 # Imports
20 # Imports
21 #-----------------------------------------------------------------------------
21 #-----------------------------------------------------------------------------
22
22
23 # Third-party
24 try:
25 from docutils.core import publish_string
26 except ImportError:
27 # html paging won't be available, but we don't raise any errors. It's a
28 # purely optional feature.
29 pass
30
31 # Our own
23 from IPython.core.interactiveshell import InteractiveShell
32 from IPython.core.interactiveshell import InteractiveShell
24
33
25 #-----------------------------------------------------------------------------
34 #-----------------------------------------------------------------------------
26 # Classes and functions
35 # Classes and functions
27 #-----------------------------------------------------------------------------
36 #-----------------------------------------------------------------------------
28
37
29 def page(strng, start=0, screen_lines=0, pager_cmd=None):
38 def page(strng, start=0, screen_lines=0, pager_cmd=None,
39 html=None, auto_html=False):
30 """Print a string, piping through a pager.
40 """Print a string, piping through a pager.
31
41
32 This version ignores the screen_lines and pager_cmd arguments and uses
42 This version ignores the screen_lines and pager_cmd arguments and uses
33 IPython's payload system instead.
43 IPython's payload system instead.
44
45 Parameters
46 ----------
47 strng : str
48 Text to page.
49
50 start : int
51 Starting line at which to place the display.
52
53 html : str, optional
54 If given, an html string to send as well.
55
56 auto_html : bool, optional
57 If true, the input string is assumed to be valid reStructuredText and is
58 converted to HTML with docutils. Note that if docutils is not found,
59 this option is silently ignored.
60
61 Note
62 ----
63
64 Only one of the ``html`` and ``auto_html`` options can be given, not
65 both.
34 """
66 """
35
67
36 # Some routines may auto-compute start offsets incorrectly and pass a
68 # Some routines may auto-compute start offsets incorrectly and pass a
37 # negative value. Offset to 0 for robustness.
69 # negative value. Offset to 0 for robustness.
38 start = max(0, start)
70 start = max(0, start)
39 shell = InteractiveShell.instance()
71 shell = InteractiveShell.instance()
72
73 if auto_html:
74 try:
75 # These defaults ensure user configuration variables for docutils
76 # are not loaded, only our config is used here.
77 defaults = {'file_insertion_enabled': 0,
78 'raw_enabled': 0,
79 '_disable_config': 1}
80 html = publish_string(strng, writer_name='html',
81 settings_overrides=defaults)
82 except:
83 pass
84
40 payload = dict(
85 payload = dict(
41 source='IPython.zmq.page.page',
86 source='IPython.zmq.page.page',
42 data=strng,
87 text=strng,
88 html=html,
43 start_line_number=start
89 start_line_number=start
44 )
90 )
45 shell.payload_manager.write_payload(payload)
91 shell.payload_manager.write_payload(payload)
46
92
93
47 def install_payload_page():
94 def install_payload_page():
48 """Install this version of page as IPython.core.page.page."""
95 """Install this version of page as IPython.core.page.page."""
49 from IPython.core import page as corepage
96 from IPython.core import page as corepage
@@ -430,7 +430,7 b' class IPythonWidget(FrontendWidget):'
430 self.exit_requested.emit()
430 self.exit_requested.emit()
431
431
432 def _handle_payload_page(self, item):
432 def _handle_payload_page(self, item):
433 self._page(item['data'])
433 self._page(item['text'])
434
434
435 #------ Trait change handlers ---------------------------------------------
435 #------ Trait change handlers ---------------------------------------------
436
436
@@ -539,7 +539,7 b' class ZMQInteractiveShell(InteractiveShell):'
539 def magic_guiref(self, arg_s):
539 def magic_guiref(self, arg_s):
540 """Show a basic reference about the GUI console."""
540 """Show a basic reference about the GUI console."""
541 from IPython.core.usage import gui_reference
541 from IPython.core.usage import gui_reference
542 page.page(gui_reference)
542 page.page(gui_reference, auto_html=True)
543
543
544
544
545 InteractiveShellABC.register(ZMQInteractiveShell)
545 InteractiveShellABC.register(ZMQInteractiveShell)
General Comments 0
You need to be logged in to leave comments. Login now