From 14958653b9bf92f56316511e8080baeeaf409b97 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Mon, 7 Aug 2017 08:55:33 +0300 Subject: Basic structure and initial homepage --- app.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 app.py (limited to 'app.py') diff --git a/app.py b/app.py new file mode 100644 index 0000000..2191a25 --- /dev/null +++ b/app.py @@ -0,0 +1,35 @@ +import markdown + +from flask import Flask, render_template +from os import listdir + +app = Flask(__name__) + +BLOG_CONTENT_DIR = 'content/blog' + +@app.route('/') +def home(): + return render_template('index.html') + +def parse_post(post): + y, m, d, *title = post[:-3].split('-') + slug = '-'.join(title) + return {'url': f'/blog/{y}/{m}/{d}/{slug}/', 'title': ' '.join(title)} + +@app.route('/blog/') +def blog(): + posts = sorted(listdir(BLOG_CONTENT_DIR), reverse=True) + posts = map(parse_post, posts) + return render_template('blog.html', posts=posts) + +@app.route('/blog/////') +def blog_post(y, m, d, title): + post_path = f'{y}-{m}-{d}-{title}' + with open(f'{BLOG_CONTENT_DIR}/{post_path}.md', 'r') as f: + text = f.read() + _, header, body = text.split('---') + for h in header: + if h.startswith('title'): + title = h.split('title:')[0].strip() + html = markdown.markdown(body, extensions=['markdown.extensions.extra', 'markdown.extensions.codehilite']) + return render_template('post.html', title=title, html=html) -- cgit v1.3.1