from deathbeds.__Markdown__ import CallableTransformer, MarkdownImporter
from jinja2 import Template
from importnb import Notebook
class TemplateTransformer(CallableTransformer):
def __call__(self, str):
from IPython import get_ipython
return Template(str).render(**get_ipython().user_ns)
def load_ipython_extension(ip):
ip.input_transformer_manager.physical_line_transforms.insert(0, TemplateTransformer())
import json
class Jinja2Importer(Notebook):
extensions = '.tpl.ipynb',
def exec_module(self, module):
with open(module.__file__) as file:
for id, cell in enumerate(json.load(file)['cells']):
if cell['cell_type'] == 'code':
code = self.source_to_code(
self.format(Template(''.join(cell['source'])).render(**vars(module))),
module.__file__
)
exec(code, module.__dict__, module.__dict__)
def parse_code_cell(self, cell, module=None):
cell['source'] = Template(''.join(cell['source'])).render(**vars(module))
return super().parse_code_cell(cell)
Ø = __name__ == '__main__'
if Ø:
%reload_ext deathbeds.__Markdown__
load_ipython_extension(get_ipython())
if Ø:
with MarkdownImporter():
import deathbeds.__Jinja2__
%reload_ext deathbeds.__Jinja2__
assert deathbeds.__Jinja2__.__file__.endswith('.md.ipynb'), "Who the fuck knows where this file came from"
if Ø:
with MarkdownImporter():
import deathbeds.__Jinja2__
%reload_ext deathbeds.__Jinja2__
assert deathbeds.__Jinja2__.__file__.endswith('.md.ipynb'), "Who the fuck knows where this file came from"
a = 10
This is a template value of
a
which is {{a}}
if Ø: from . import disqus