From 0a4b13e3976ea31675670a5431070dc15069679b Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Mon, 28 Jun 2021 16:16:43 -0400 Subject: [PATCH] walk the markdown directory to find subfolders --- build.py | 80 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/build.py b/build.py index decf5dc..a211060 100644 --- a/build.py +++ b/build.py @@ -14,7 +14,7 @@ md_extensions = ['fenced_code', 'codehilite', 'nl2br', 'toc', 'smarty', 'tables' def print_file(in_file, out_file): - print('%-53s -> %s' % (in_file, out_file)) + print('%-62s -> %s' % (in_file, out_file)) template = open('template.html').read() @@ -34,41 +34,49 @@ for (dirpath, _, filenames) in os.walk(static_directory): out_filenames = [] -# TODO: also walk the markdown directory -for markdown_filename in glob.glob(os.path.join(input_directory, '*.md')): - markdown_file = open(markdown_filename) - text = markdown_file.read() - markdown_file.close() - - if not text.startswith('# '): - text = '# ' + text - - match = re.match(r'^(.*?)\n', text) - if match: - title = match.group(1).lstrip('#') - else: - title = text - title += ' | Colin McMillen' - if markdown_filename == os.path.join(input_directory, 'index.md'): - title = 'Colin McMillen' - - out_filename = os.path.basename(markdown_filename).replace('.md', '.html') - - html = markdown.markdown(text, extensions=md_extensions, output_format='html5') - output = template.replace('__TITLE_GOES_HERE__', title) - output = output.replace('__CONTENT_GOES_HERE__', html) - - page_url = out_filename - if page_url.endswith('index.html'): # strip off index.html - page_url = page_url[:-len('index.html')] - output = output.replace('__PAGE_URL_GOES_HERE__', page_url) - - out_filenames.append(out_filename) - out_fullpath = os.path.join(output_directory, out_filename) - print_file(markdown_filename, out_fullpath) - out_file = open(out_fullpath, 'w') - out_file.write(output) - out_file.close() + +for (dirpath, _, filenames) in os.walk(input_directory): + for filename in filenames: + markdown_filename = os.path.join(dirpath, filename) + if not markdown_filename.endswith('.md'): + continue + + markdown_file = open(markdown_filename) + text = markdown_file.read() + markdown_file.close() + + if not text.startswith('# '): + text = '# ' + text + + match = re.match(r'^(.*?)\n', text) + if match: + title = match.group(1).lstrip('# ') + else: + title = text + title += ' | Colin McMillen' + if markdown_filename == os.path.join(input_directory, 'index.md'): + title = 'Colin McMillen' + + out_filename = os.path.basename(markdown_filename).replace('.md', '.html') + + html = markdown.markdown(text, extensions=md_extensions, output_format='html5') + output = template.replace('__TITLE_GOES_HERE__', title) + output = output.replace('__CONTENT_GOES_HERE__', html) + + page_url = out_filename + if page_url.endswith('index.html'): # strip off index.html + page_url = page_url[:-len('index.html')] + output = output.replace('__PAGE_URL_GOES_HERE__', page_url) + + out_filenames.append(out_filename) + out_dirpath = os.path.join(output_directory, dirpath) + out_dirpath = out_dirpath.replace('/content', '', 1) + os.makedirs(out_dirpath, exist_ok=True) + out_fullpath = os.path.join(out_dirpath, out_filename) + print_file(markdown_filename, out_fullpath) + out_file = open(out_fullpath, 'w') + out_file.write(output) + out_file.close() # TODO: make a sitemap / RSS? #index_filename = os.path.join(output_directory, 'index.html')