summaryrefslogtreecommitdiff
path: root/generate.py
diff options
context:
space:
mode:
authoryuzu-eva <stevenhu@web.de>2024-10-25 21:46:28 +0200
committeryuzu-eva <stevenhu@web.de>2024-10-25 21:46:28 +0200
commit15fc4c739ae07421c0ce1bed9fc05403312a2e86 (patch)
tree57654afde34a3974288d7e5a10f9e2a18d6f4d2d /generate.py
parentc06148152be80a6536cfe59f7ffe7356bdf75f3c (diff)
added about page, changed css, added navbar
Diffstat (limited to 'generate.py')
-rwxr-xr-xgenerate.py134
1 files changed, 0 insertions, 134 deletions
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<pre><code>{}</code></pre>\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<blockquote>'
- for line in houdini.escape_html(content.strip()).split("\n"):
- out += '\n<span class="quote">{}</span><br>'.format(line)
- return out + '\n</blockquote>'
-
- def image(self, link, text, title):
- return "<a href='%s' target='_blank'><img alt='%s' src='%s'></a>" % (
- urlparse(link)._replace(query='').geturl(), text, link
- )
-
- def heading(self, text, level):
- hash_ = urllib.parse.quote_plus(text)
- return "<h%d id='%s'>%s <a class='header_linker' href='#%s'>[#]</a></h%d>\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()