import os import re import emoji import mistune codeRe = "```\s*python([\s\S]*?)```" def tagger(): tag_data = open('tag_database').read() tag_dict = {} tag_list = tag_data.split('\n') for tag in tag_list: category = tag.split(':')[1] snippet = tag.split(':')[0] if category in tag_dict: tag_dict[category].append(snippet) else: tag_dict[category] = [snippet] return tag_dict class MyRenderer(mistune.Renderer): def block_code(self, code, lang): if not lang: return f'\n
{mistune.escape(code.strip())}
\n' else: return f'\n
{mistune.escape(code.strip())}
\n' renderer = MyRenderer() md = mistune.Markdown(renderer=renderer,escape=True) def title_case(str): return str[:1].upper() + str[1:].lower() rendered = '' tag_dict = tagger() for category in tag_dict: rendered += f'

{title_case(category)}

' snippets = tag_dict[category] for file in snippets: content = open('snippets/'+file+'.md').read() content = re.sub(':(\S+):',r':\1:',content) codeParts = re.split(codeRe,content) codeParts[3] = f'\n\n\n\n```python\n{codeParts[3].strip()}\n```\n' content = codeParts[0] + '``` python' + codeParts[1] + '```' + codeParts[2] + codeParts[3] content = f'
{emoji.emojize(md.render(content),use_aliases=True)}
'+'\n\n' rendered += re.sub('

(\S+)

',r'

\1

',content) + '
' rendered = re.sub('

(\S+)

',r'

\1

',rendered) nav_string = '' start = '''{% extends "base.html" %} {% block content %}''' end = '{% endblock %}' footer = ''' ''' rendered = f'
{nav_string}
' + rendered + f'{footer}
' rendered = re.sub('','',rendered) open('website/app/templates/index.html','w',encoding='utf-8').write(start + rendered + end) snippets = [snippet.replace('.md','') for snippet in snippets] open('website/app/snippets','w').write('\n'.join(snippets))