From 6c8e5849392cc2541bbdb84d43ce4be2d7fe4319 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 1 Jul 2021 12:20:22 +1000 Subject: Removed files no longer in use. Also renamed agpl license file. --- engine/engine.py | 151 ------------------------------------------------------- 1 file changed, 151 deletions(-) delete mode 100644 engine/engine.py (limited to 'engine') diff --git a/engine/engine.py b/engine/engine.py deleted file mode 100644 index f6d4be4..0000000 --- a/engine/engine.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright Yuchen Pei 2018 (hi@ypei.me) -# Licensed under GNU GPLv3+ -# -# A static site generator inspired by Jekyll and Hakyll - -import os -import re -import yaml -import pypandoc -import logging -from lxml import etree -from pyatom import AtomFeed - -def item_from_path(path): - with open(path) as f: - text = f.read() - p = re.compile(r'---\n(.*?)\n---(.*)', re.DOTALL) - matchres = p.search(text) - res = yaml.load(matchres.group(1)) - x, ext = os.path.splitext(path) - res.setdefault('name', os.path.basename(x)) - if ext in ['.md', '.markdown']: - logging.info('Converting {}...'.format(path)) - res['body'] = pypandoc.convert_text(matchres.group(2), 'html', format='md', extra_args=['--mathjax', '-s', '--toc']) - elif ext == '.wiki': - logging.info('Converting {}...'.format(path)) - res['body'] = pypandoc.convert_text(matchres.group(2), 'html', format='vimwiki') - elif ext == '.html': - res['body'] = matchres.group(2) - res.setdefault('synlen', 1) - paras = etree.HTML(res['body']).xpath('//p') - res['synopsis'] = ''.join([etree.tostring(p, encoding='unicode') for p in paras[:res['synlen']]]) - return res - -def combine(item, template): - resbody = template - for k, v in item.items(): - resbody = resbody.replace('${}$'.format(k), str(v)) - res = dict(item) - res['body'] = resbody - return res - - -def main(): - basedir = os.path.dirname(os.path.realpath(__file__)) + '/../' - pagesdir = basedir + 'pages/' - postsdir = basedir + 'posts/' - micropostsdir = basedir + 'microposts/' - sitedir = basedir + 'site/' - templatesdir = basedir + 'templates/' - homepostnum = 5 - - logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') - - posts = get_all_items(postsdir) - posts.sort(key=lambda x: x['date'], reverse=True) - for post in posts: - post.setdefault('url', 'posts/{}.html'.format(post['name'])) - with open('{}{}.html'.format(templatesdir, post['template'])) as f: - template = f.read() - post = combine(post, template) - save_to_html(post, sitedir) - - with open(templatesdir + 'barepost.html') as f: - template = f.read() - #headposts is the list of the first few posts, to be displayed on blog.html - headposts = {'body' : ''.join([combine(post, template)['body'] for post in posts[:homepostnum]])} - with open(templatesdir + 'blog.html') as f: - template = f.read() - headposts = combine(headposts, template) - headposts['url'] = 'blog.html' - save_to_html(headposts, sitedir) - - with open(templatesdir + 'postlistitem.html') as f: - template = f.read() - postlist = {'body': ''} - for post in posts: - postlist['body'] += combine(post, template)['body'] - with open(templatesdir + 'postlist.html') as f: - template = f.read() - postlist = combine(postlist, template) - postlist['url'] = 'postlist.html' - save_to_html(postlist, sitedir) - - pages = get_all_items(pagesdir) - for page in pages: - page.setdefault('url', page['name'] + '.html') - with open('{}{}.html'.format(templatesdir, page['template'])) as f: - template = f.read() - page = combine(page, template) - save_to_html(page, sitedir) - - microposts = get_all_items(micropostsdir) - microposts.sort(key=lambda x: x['date'], reverse=True) - with open(templatesdir + 'micropost.html') as f: - template = f.read() - allmposts = {'body':''} - for micropost in microposts: - allmposts['body'] += combine(micropost, template)['body'] - with open(templatesdir + 'microblog.html') as f: - template = f.read() - allmposts = combine(allmposts, template) - allmposts['url'] = 'microblog.html' - save_to_html(allmposts, sitedir) - - blog_feed = AtomFeed(title="Yuchen Pei's Blog", - feed_url="https://ypei.me/blog-feed.xml", - url="https://ypei.me", - author="Yuchen Pei") - for post in posts: - blog_feed.add(title=post["title"], - content=post["body"], - content_type="html", - author="Yuchen Pei", - url=post["url"], - updated=post["date"]) - blog_feed_item = {'body':blog_feed.to_string(), 'url': 'blog-feed.xml'} - save_to_html(blog_feed_item, sitedir) - - microblog_feed = AtomFeed(title="Yuchen Pei's Microblog", - feed_url="https://ypei.me/microblog-feed.xml", - url="https://ypei.me", - author="Yuchen Pei") - for micropost in microposts: - microblog_feed.add(title=micropost["date"], - content=micropost["body"], - content_type="html", - author="Yuchen Pei", - url="microblog.html", - updated=micropost["date"]) - microblog_feed_item = {'body':microblog_feed.to_string(), 'url': 'microblog-feed.xml'} - save_to_html(microblog_feed_item, sitedir) - -def save_to_html(item, sitedir): - path = sitedir + item['url'] - os.makedirs(os.path.dirname(path), exist_ok=True) - logging.info('Saving to {}...'.format(path)) - with open(path, 'w') as f: - f.write(item['body']) - -def get_all_items(dir_): - items = [] - for filename in os.listdir(dir_): - ext = filename.split('.')[-1] - path = dir_ + filename - item = item_from_path(path) - items.append(item) - return items - -if __name__ == "__main__": - main() -- cgit v1.2.3