##// END OF EJS Templates
Merge pull request #2002 from bfroehle/lsmagic_docs...
Fernando Perez -
r7654:edaad4c7 merge
parent child Browse files
Show More
@@ -340,6 +340,30 b' class MagicsManager(Configurable):'
340 340 """
341 341 return self.magics
342 342
343 def lsmagic_docs(self, brief=False, missing=''):
344 """Return dict of documentation of magic functions.
345
346 The return dict has the keys 'line' and 'cell', corresponding to the
347 two types of magics we support. Each value is a dict keyed by magic
348 name whose value is the function docstring. If a docstring is
349 unavailable, the value of `missing` is used instead.
350
351 If brief is True, only the first line of each docstring will be returned.
352 """
353 docs = {}
354 for m_type in self.magics:
355 m_docs = {}
356 for m_name, m_func in self.magics[m_type].iteritems():
357 if m_func.__doc__:
358 if brief:
359 m_docs[m_name] = m_func.__doc__.split('\n', 1)[0]
360 else:
361 m_docs[m_name] = m_func.__doc__.rstrip()
362 else:
363 m_docs[m_name] = missing
364 docs[m_type] = m_docs
365 return docs
366
343 367 def register(self, *magic_objects):
344 368 """Register one or more instances of Magics.
345 369
@@ -59,6 +59,24 b' class BasicMagics(Magics):'
59 59 """List currently available magic functions."""
60 60 print(self._lsmagic())
61 61
62 def _magic_docs(self, brief=False, rest=False):
63 """Return docstrings from magic functions."""
64 mman = self.shell.magics_manager
65 docs = mman.lsmagic_docs(brief, missing='No documentation')
66
67 if rest:
68 format_string = '**%s%s**::\n\n\t%s\n\n'
69 else:
70 format_string = '%s%s:\n\t%s\n'
71
72 return ''.join(
73 [format_string % (ESC_MAGIC, fname, fndoc)
74 for fname, fndoc in sorted(docs['line'].items())]
75 +
76 [format_string % (ESC_MAGIC*2, fname, fndoc)
77 for fname, fndoc in sorted(docs['cell'].items())]
78 )
79
62 80 @line_magic
63 81 def magic(self, parameter_s=''):
64 82 """Print information about the magic function system.
@@ -74,45 +92,15 b' class BasicMagics(Magics):'
74 92 except IndexError:
75 93 pass
76 94
77 magic_docs = []
78 escapes = dict(line=ESC_MAGIC, cell=ESC_MAGIC*2)
79 magics = self.shell.magics_manager.magics
80
81 for mtype in ('line', 'cell'):
82 escape = escapes[mtype]
83 for fname, fn in sorted(magics[mtype].items()):
84
85 if mode == 'brief':
86 # only first line
87 if fn.__doc__:
88 fndoc = fn.__doc__.split('\n',1)[0]
89 else:
90 fndoc = 'No documentation'
91 else:
92 if fn.__doc__:
93 fndoc = fn.__doc__.rstrip()
94 else:
95 fndoc = 'No documentation'
96
97 if mode == 'rest':
98 rest_docs.append('**%s%s**::\n\n\t%s\n\n' %
99 (escape, fname, fndoc))
100 else:
101 magic_docs.append('%s%s:\n\t%s\n' %
102 (escape, fname, fndoc))
103
104 magic_docs = ''.join(magic_docs)
105
106 if mode == 'rest':
107 return "".join(rest_docs)
95 brief = (mode == 'brief')
96 rest = (mode == 'rest')
97 magic_docs = self._magic_docs(brief, rest)
108 98
109 99 if mode == 'latex':
110 100 print(self.format_latex(magic_docs))
111 101 return
112 102 else:
113 103 magic_docs = format_screen(magic_docs)
114 if mode == 'brief':
115 return magic_docs
116 104
117 105 out = ["""
118 106 IPython's 'magic' functions
@@ -304,7 +292,7 b' Defaulting color scheme to \'NoColor\'"""'
304 292 def quickref(self,arg):
305 293 """ Show a quick reference sheet """
306 294 from IPython.core.usage import quick_reference
307 qr = quick_reference + self.magic('-brief')
295 qr = quick_reference + self._magic_docs(brief=True)
308 296 page.page(qr)
309 297
310 298 @line_magic
General Comments 0
You need to be logged in to leave comments. Login now