summaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'main.py')
-rwxr-xr-xmain.py171
1 files changed, 0 insertions, 171 deletions
diff --git a/main.py b/main.py
deleted file mode 100755
index 1bd3fc9..0000000
--- a/main.py
+++ /dev/null
@@ -1,171 +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_overview():
- src_file = "content/thoughts.md"
- template_file = "thoughts.html.j2"
- dst_file = "thoughts.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 = "my thoughts",
- content = parse_text(f.read())[0]
- )
- html_file.write(html)
-
-
-def thoughts():
- src_path = "content/thoughts"
- template_file = "thought.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 = file.replace("-", " ").replace(".md", ""),
- content = parse_text(f.read())[0]
- )
- html_file.write(html)
-
-def about():
- src_file = "content/about.md"
- template_file = "about.html.j2"
- dst_file = "about.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 = "about me",
- 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")
- shutil.copy("content/robots.txt", "static")
-
- index()
- about()
- thoughts_overview()
- thoughts()
-
-if __name__ == '__main__':
- main()