Source code for nbpresent.exporters.html
import codecs
import os
import json
from collections import (
OrderedDict,
defaultdict
)
from nbconvert.exporters.html import HTMLExporter
from .base import (
APP_ROOT,
STANDALONE_ASSETS,
NB_ASSETS
)
[docs]class PresentExporter(HTMLExporter):
def __init__(self, *args, **kwargs):
# TODO: this probably isn't the right way
kwargs.update(
template_file="nbpresent",
template_path=[os.path.join(APP_ROOT, "templates")]
)
super(PresentExporter, self).__init__(*args, **kwargs)
[docs] def from_notebook_node(self, nb, resources=None, **kw):
bin_ext = ["woff", "ttf"]
resources = self._init_resources(resources)
assets = defaultdict(OrderedDict)
to_inline = NB_ASSETS + STANDALONE_ASSETS
for filename in to_inline:
ext = filename.split(".")[-1]
mode = "rb" if ext in bin_ext else "r"
with codecs.open(filename, mode, encoding="utf-8") as fp:
assets[ext].update({
os.path.basename(filename): fp.read()
})
resources.update(
nbpresent={
"metadata": json.dumps(nb.metadata.get("nbpresent", {}),
indent=2,
sort_keys=True)
},
nbpresent_assets=assets
)
return super(PresentExporter, self).from_notebook_node(
nb,
resources=resources,
**kw
)