##// END OF EJS Templates
Use low overhead object heritence in Js (Object.create vs new)...
Use low overhead object heritence in Js (Object.create vs new) the use of XX.prototype = new YY(); Does trigger the constructor of YY without the nead for it. `Object.create` does go around this limitation and target browser that are relatively Old. Cf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create for more info It might help to get rid of some logic in constructors that check wether some options are passed in, that were causing errors on noteboko load. Typically `if(element){ }` on Abstract `Cell` constructor.

File last commit:

r18317:64ec5bd9
r18377:848742ff
Show More
autogen_magics.py
63 lines | 1.9 KiB | text/x-python | PythonLexer
from IPython.core.alias import Alias
from IPython.core.interactiveshell import InteractiveShell
from IPython.core.magic import MagicAlias
from IPython.utils.text import dedent, indent
shell = InteractiveShell.instance()
magics = shell.magics_manager.magics
def _strip_underline(line):
chars = set(line.strip())
if len(chars) == 1 and ('-' in chars or '=' in chars):
return ""
else:
return line
def format_docstring(func):
docstring = (func.__doc__ or "Undocumented").rstrip()
docstring = indent(dedent(docstring))
# Sphinx complains if indented bits have rst headings in, so strip out
# any underlines in the docstring.
lines = [_strip_underline(l) for l in docstring.splitlines()]
return "\n".join(lines)
output = [
"Line magics",
"===========",
"",
]
# Case insensitive sort by name
def sortkey(s): return s[0].lower()
for name, func in sorted(magics['line'].items(), key=sortkey):
if isinstance(func, Alias) or isinstance(func, MagicAlias):
# Aliases are magics, but shouldn't be documented here
# Also skip aliases to other magics
continue
output.extend([".. magic:: {}".format(name),
"",
format_docstring(func),
""])
output.extend([
"Cell magics",
"===========",
"",
])
for name, func in sorted(magics['cell'].items(), key=sortkey):
if name == "!":
# Special case - don't encourage people to use %%!
continue
if func == magics['line'].get(name, 'QQQP'):
# Don't redocument line magics that double as cell magics
continue
if isinstance(func, MagicAlias):
continue
output.extend([".. cellmagic:: {}".format(name),
"",
format_docstring(func),
""])
with open("source/interactive/magics-generated.txt", "w") as f:
f.write("\n".join(output))