import pathlib
import re
import jinja2
from markdown.core import Markdown
from markdown.extensions import Extension
from markdown.preprocessors import Preprocessor
from obsidian_parser import Vault
root_dir = pathlib.Path(__file__).parent
vault = Vault(root_dir / ".." / "content")
note = vault.get_note("Biokemi/Cellulära processer/Transport över cellmembran/Anteckningar.md")
loader = jinja2.FileSystemLoader(root_dir / "templates")
env = jinja2.Environment(loader=loader)
class ObsidianImage(Preprocessor):
def run(self, lines):
new_lines = []
for line in lines:
m = re.search(r"!\[\[(.*)\]\]", line)
if m:
if "|" in m.group(1):
img, width = m.group(1).split("|")
new_lines.append("
")
else:
new_lines.append("
")
else:
new_lines.append(line)
return new_lines
class MyExtension(Extension):
def extendMarkdown(self, md):
md.preprocessors.register(ObsidianImage(md), 'mypattern', 175)
m = Markdown(extensions=[MyExtension()])
env.filters["markdown"] = m.convert
output = root_dir / "test.html"
template = env.get_template("base.html")
with output.open("w", encoding="utf-8") as f:
data = template.render(note=note, vault=vault)
f.write(data)
import webbrowser
webbrowser.open(output.as_uri())
print(f"Written to {output}")