Source code for jyquickhelper.js

"""
Installs and loads an extension.


:githublink:`%|py|5`
"""
import os
from notebook.nbextensions import install_nbextension
from IPython.display import HTML


[docs]def install_extension(ext, overwrite=False): """ Installs an extension. :param ext: extension name :param overwrite: overwrite :return: installation path :githublink:`%|py|17` """ this = os.path.dirname(__file__) path = os.path.join(this, ext) if not os.path.exists(path): raise FileNotFoundError( "Unable to find extension '{0}' in '{1}'".format(ext, this)) dest = install_nbextension( path, user=True, destination=ext, overwrite=overwrite) return dest
[docs]def load_extension(ext, kind='html', overwrite=False): """ Loads an extension. :param ext: extension name :param overwrite: overwrite :param kind: ``'html'`` or ``'str'`` :return: HTML object :githublink:`%|py|36` """ dest = install_extension(ext, overwrite=overwrite) files = os.listdir(dest) css = [_ for _ in files if _.endswith('.css')] js = [_ for _ in files if _.endswith('.js')] code = """<script> var load_jyq_css___EXT__ = function(cssfile) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = require.toUrl(cssfile); document.getElementsByTagName("head")[0].appendChild(link); }; __CSS__ require([__REQ__]);\n </script> <p>Loads extension '__EXT__'.</p>""".replace(" ", "") code = code.replace('__EXT__', ext) code = code.replace('__REQ__', ',\n'.join( "'{0}/{1}'".format(ext, _) for _ in js)) code = code.replace('__CSS__', ';\n'.join( "load_jyq_css_{0}('{0}/{1}')".format(ext, _) for _ in css) + ';') if kind == "html": return HTML(code) else: return code