Add templating for list of blog posts
This commit is contained in:
parent
ab00f845c2
commit
64885aa4f1
4 changed files with 37 additions and 9 deletions
5
blog/feeds.md
Normal file
5
blog/feeds.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
title: Get started using feeds
|
||||||
|
summary: Pick a client, add some feeds, done
|
||||||
|
published: 2020-06-02
|
||||||
|
|
||||||
|
---
|
5
blog/irc.md
Normal file
5
blog/irc.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
title: Get started with IRC
|
||||||
|
summary: Pick a client, join some channels, maybe register with NickServ
|
||||||
|
published: 2020-06-02
|
||||||
|
|
||||||
|
---
|
26
do_index.py
Executable file
26
do_index.py
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from strictyaml import load as load_yaml
|
||||||
|
from ipo import list, str, read, write, map, starstarmap, takewhile, join, sort
|
||||||
|
from glob import glob
|
||||||
|
import re
|
||||||
|
|
||||||
|
TEMPLATE = """
|
||||||
|
<li><a href="{path}">
|
||||||
|
<div class="title">{title}</div>
|
||||||
|
<div class="summary">{summary}</div>
|
||||||
|
</a></li>"""
|
||||||
|
|
||||||
|
def metadata(filename):
|
||||||
|
with open(filename) as fh:
|
||||||
|
metadata_yaml = read(fh) | takewhile(lambda line: line != "---") | join("\n")
|
||||||
|
return {
|
||||||
|
**load_yaml(metadata_yaml).data,
|
||||||
|
"path": re.sub(r".md$", "", filename)
|
||||||
|
}
|
||||||
|
|
||||||
|
blog_post_list = glob("blog/*.md") | map(metadata) | sort(key=lambda x: x["published"]) | starstarmap(TEMPLATE.format) | join("")
|
||||||
|
|
||||||
|
with open(sys.argv[1]) as file_in, open(sys.argv[2], "w") as file_out:
|
||||||
|
file_in.read().format(blog_posts=blog_post_list) | write(file=file_out)
|
10
index.html
10
index.html
|
@ -16,15 +16,7 @@
|
||||||
|
|
||||||
<section id="blog">
|
<section id="blog">
|
||||||
<h2>Blog</h2>
|
<h2>Blog</h2>
|
||||||
<ul>
|
<ul>{blog_posts}
|
||||||
<li><a href="/blog/irc/">
|
|
||||||
<div class="title">Get started with IRC</div>
|
|
||||||
<div class="summary">Pick a client, join some channels, maybe register with NickServ</div>
|
|
||||||
</a></li>
|
|
||||||
<li><a href="/blog/rss/">
|
|
||||||
<div class="title">Get started using RSS</div>
|
|
||||||
<div class="summary">Pick a client, add some feeds, done</div>
|
|
||||||
</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue