22# copied from https://github.com/tonybaloney/tonybaloney.github.io/blob/master/blog-gen.py
33import markdown
44import jinja2
5- import glob
5+ from pathlib import Path
66from datetime import date , datetime
77from email .utils import formatdate , format_datetime # for RFC2822 formatting
88
99TEMPLATE_FILE = "templates/blog_post_template.html"
1010FEED_TEMPLATE_FILE = "templates/rss_feed_template.xml"
11- BASE_URL = "https://tonybaloney.github.io/"
11+ BLOG_POSTS_PATH = Path ("posts" )
12+ OUTPUT_DIR = Path ("_site" )
1213
1314from dataclasses import dataclass
1415
1516@dataclass
1617class Post :
1718 title : str
1819 author : str
19- md_path : str
20+ md_path : Path
2021 date : date
2122
2223 @property
2324 def html_path (self ):
24- return self . md_path . replace ( 'blog/' , ' posts/' ) .replace ('.md' , '.html' )
25+ return OUTPUT_DIR / " posts" / self . md_path . name .replace ('.md' , '.html' )
2526
27+ @property
28+ def url (self ):
29+ return f"posts/{ self .html_path .name } "
2630
2731
2832
2933def main ():
30- md_post_paths = sorted (glob .glob ("blog/ *.md" ))
34+ md_post_paths = sorted (BLOG_POSTS_PATH .glob ("*.md" ))
3135 extensions = ['extra' , 'smarty' , 'meta' , 'codehilite' ]
3236 _md = markdown .Markdown (extensions = extensions , output_format = 'html5' )
3337
@@ -36,34 +40,30 @@ def main():
3640
3741 all_posts = []
3842 for md_post_path in md_post_paths :
39- print ("rendering" , md_post_path )
40- post_date = date .fromisoformat (md_post_path [5 :15 ])
41- with open (md_post_path ) as f :
42- html = _md .convert (f .read ())
43+ # print("rendering", md_post_path)
44+ post_date = date .fromisoformat (md_post_path .name [:10 ])
45+ html_content = _md .convert (md_post_path .read_text ())
4346 post = Post (
4447 md_path = md_post_path , date = post_date ,
4548 author = _md .Meta ['author' ][0 ],
4649 title = _md .Meta ['title' ][0 ],
4750 )
48- doc = env .get_template (TEMPLATE_FILE ).render (
49- content = html , baseurl = BASE_URL , url = post .html_path , post = post ,
51+ post_html = env .get_template (TEMPLATE_FILE ).render (
52+ content = html_content , url = post .html_path , post = post ,
5053 )
54+ print ("writing" , post .html_path )
55+ post .html_path .write_text (post_html )
5156
52- with open (post .html_path , "w" ) as f :
53- f .write (doc )
54- # all_posts.append(dict(**_md.Meta, date=post_date, rfc2822_date=format_datetime(post_date), link="{0}{1}".format(BASE_URL, url)))
55- all_posts .append (post ) # TODO fix date
57+ all_posts .append (post ) # TODO rfc2822_date=format_datetime(post_date),
5658
5759 # index
58- print ("rendering index.html" )
59- with open ('index.md' ) as f :
60- index_html = _md .convert (f .read ())
61- doc = env .get_template ('templates/index.html' ).render (
62- content = index_html ,
60+ # print("rendering index.html")
61+ index_html = env .get_template ('pages/index.html' ).render (
6362 posts = all_posts ,
6463 )
65- with open ('index.html' , "w" ) as f :
66- f .write (doc )
64+ index_html_path = OUTPUT_DIR / 'index.html'
65+ print ("writing" , index_html_path )
66+ index_html_path .write_text (index_html )
6767
6868 # Order blog posts by date published
6969 all_posts .sort (key = lambda p : p .date , reverse = True )
0 commit comments