Markdown Viewer¶
import os
import streamlit as st
Print banner.
@st.cache_data
def print_banner():
print("""
.___ .__
_____ __| _/ ___ _|__| ______ _ __
/ \\ / __ | ______ \\ \\/ / |/ __ \\ \\/ \\/ /
| Y Y \\/ /_/ | /_____/ \\ /| \\ ___/\\ /
|__|_| /\\____ | \\_/ |__|\\___ >\\/\\_/
\\/ \\/ \\/
""")
return 1
print_banner()
Find all files in the current directory that have a .md extension. These files might contain text generated by large language models. If a particular .md file is a response to a specific question, that question will be stored in a separate file with the same base name but a .q.md extension. Do not include any .q.md files in the final list of files.
md_files = [f for f in os.listdir('.') if f.endswith('.md') and not f.endswith('.q.md')]
Sort files based on their modification time
md_files.sort(key=os.path.getmtime, reverse=True)
Create radio buttons to select a file
selected_file = st.sidebar.radio("Select markdown file:", md_files)
Adds a prefix to each line of a multi-line string.
def prefix_lines(query, prefix):
lines = query.splitlines()
prefixed_lines = [prefix + line for line in lines]
return "\n".join(prefixed_lines)
Check if query file exists.
query_file_path = selected_file[:-3] + ".q.md"
if os.path.exists(query_file_path):
with open(query_file_path, 'r', encoding='utf-8') as file:
query = file.read()
st.write(prefix_lines(query, "> "))
st.write("---");
Read the contents of selected file
with open(selected_file, 'r', encoding='utf-8') as file:
md_text = file.read()
Display the contents of the file that has been selected.
st.write(md_text)