Coverage for src/midgy/loader.py: 0%
23 statements
« prev ^ index » next coverage.py v7.1.0, created at 2023-02-14 15:49 -0800
« prev ^ index » next coverage.py v7.1.0, created at 2023-02-14 15:49 -0800
1"""run and import markdown files as python"""
2from dataclasses import dataclass, field
4from types import MethodType
5from importnb import Notebook
7from .python import Python
9__all__ = ("Markdown", "run")
12@dataclass
13class Markdown(Notebook):
14 """an importnb extension for markdown documents"""
16 include_doctest: bool = False
17 extensions: tuple = field(default_factory=[".md", ".py.md", ".md.ipynb", ].copy)
18 render_cls = Python
20 def __post_init__(self):
21 self.renderer = self.render_cls(include_doctest=self.include_doctest)
23 def exec_module(self, module):
24 super().exec_module(module)
25 module._repr_markdown_ = MethodType(repr_markdown, module)
27 def code(self, str):
28 return super().code(self.renderer.render("".join(str)))
31def repr_markdown(self):
32 with open(self.__file__) as file:
33 return F"\t{repr(self)}\n" + file.read()
35if __name__ == "__main__":
36 from sys import argv
38 Markdown.load_argv(argv[1:])