From 15fc4c739ae07421c0ce1bed9fc05403312a2e86 Mon Sep 17 00:00:00 2001 From: yuzu-eva Date: Fri, 25 Oct 2024 21:46:28 +0200 Subject: added about page, changed css, added navbar --- generate.py | 134 ------------------------------------------------------------ 1 file changed, 134 deletions(-) delete mode 100755 generate.py (limited to 'generate.py') diff --git a/generate.py b/generate.py deleted file mode 100755 index 65e6ef6..0000000 --- a/generate.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env python3 - -from pygments import highlight -from pygments.lexers import get_lexer_by_name -from pygments.formatters import HtmlFormatter -from urllib.parse import urlparse - -import urllib.parse -import lxml.html -import mistune -import houdini -import jinja2 -import shutil -import os - -ENV = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) - -class MyRenderer(mistune.HTMLRenderer): - def block_code(self, code, info=None): - if not info: - return '\n
{}
\n'.format(houdini.escape_html(code.strip())) - lexer = get_lexer_by_name(info, stripall=True) - formatter = HtmlFormatter() - return highlight(code, lexer, formatter) - - def block_quote(self, content): - content = content[3:-5] - out = '\n
' - for line in houdini.escape_html(content.strip()).split("\n"): - out += '\n{}
'.format(line) - return out + '\n
' - - def image(self, link, text, title): - return "%s" % ( - urlparse(link)._replace(query='').geturl(), text, link - ) - - def heading(self, text, level): - hash_ = urllib.parse.quote_plus(text) - return "%s [#]\n" % ( - level, hash_, text, hash_, level - ) - -def parse_file(path): - with open(path, "r") as f: - unformatted = f.read() - - return parse_text(unformatted)[0] - -def parse_text(unformatted): - md = mistune.create_markdown( - renderer = MyRenderer(), - plugins = ["strikethrough", "table", "url", "task_lists", "def_list"] - ) - html = md(unformatted) - if html == "": - return "", "" - - return html, get_headers(html) - -def get_headers(html): - root = lxml.html.fromstring(html) - - headers = [] - thesmallestlevel = 7 - for node in root.xpath('//h1|//h2|//h3|//h4|//h5//h6'): - level = int(node.tag[-1]) - if level < thesmallestlevel: - thesmallestlevel = level - headers.append(( - urllib.parse.unquote_plus(node.attrib["id"]), - level, - "#%s" % node.attrib["id"]) - ) - - headers = [(i[0], i[1] - thesmallestlevel, i[2]) for i in headers] - md_template = jinja2.Template(""" -{% for text, depth, link in contents -%} - {{ " " * depth }} - [{{ text }}]({{ link }}) -{% endfor %} - """) - - return mistune.html(md_template.render(contents = headers)) - -def index(): - src_file = "content/index.md" - template_file = "index.html.j2" - dst_file = "index.html" - - template = ENV.get_template(template_file) - - with open(os.path.join('static/%s' % dst_file), 'w') as html_file: - with open(src_file, "r") as f: - html = template.render( - prefix = "./", - title = "eva's site", - content = parse_text(f.read())[0] - ) - html_file.write(html) - -def thoughts(): - src_path = "content/thoughts" - template_file = "thoughts.html.j2" - dst_path = "static/thoughts" - - template = ENV.get_template(template_file) - - if not os.path.isdir(dst_path): - os.mkdir(dst_path) - - for file in os.listdir(src_path): - dst_file = file.replace(".md", ".html") - with open(os.path.join(dst_path, dst_file), 'w') as html_file: - with open(os.path.join(src_path, file), 'r') as f: - html = template.render( - prefix = "../", - title = "eva's site :: thoughts", - content = parse_text(f.read())[0] - ) - html_file.write(html) - -def main(): - if os.path.isdir("static"): - shutil.rmtree("static") - os.mkdir("static") - - shutil.copytree("content/styles", "static/styles") - shutil.copytree("content/images", "static/images") - - index() - thoughts() - -if __name__ == '__main__': - main() -- cgit v1.2.3