Documentation / app.py
Lenylvt's picture
Update app.py
49bea70 verified
raw
history blame
2.15 kB
import streamlit as st
import os
# Improved function to read markdown files with error handling
def load_markdown_file(path):
try:
with open(path, 'r', encoding='utf-8') as file:
content = file.read()
return content
except Exception as e:
return f"Error reading file: {e}"
# Streamlit UI Enhancements
st.title('πŸ“š Documentation Viewer')
# Assuming your documentation is in the 'docs' folder
docs_base_path = './docs'
# Enhanced error handling for directory listing
if not os.path.exists(docs_base_path):
st.error('Documentation directory does not exist.')
else:
# List categories based on folder names with improved error handling
try:
categories = [d for d in os.listdir(docs_base_path) if os.path.isdir(os.path.join(docs_base_path, d))]
if not categories:
st.error('No categories found in the documentation directory.')
else:
category = st.sidebar.selectbox('Select a Category', categories)
# List pages based on markdown files in the selected category folder
pages_path = os.path.join(docs_base_path, category)
pages = [f for f in os.listdir(pages_path) if os.path.isfile(os.path.join(pages_path, f)) and f.endswith('.md')]
if not pages:
st.error('No markdown pages found in the selected category.')
else:
page = st.sidebar.selectbox('Select a Page', pages)
# Load and display the selected markdown file
markdown_path = os.path.join(pages_path, page)
markdown_content = load_markdown_file(markdown_path)
st.markdown(markdown_content, unsafe_allow_html=True)
except Exception as e:
st.error(f"Error listing categories or pages: {e}")
# Optional: Add a theme or custom CSS for styling
st.markdown(
"""
<style>
.css-18e3th9 {
background-color: #f0f2f6;
}
.css-1d391kg {
padding-top: 1rem;
padding-left: 1rem;
padding-right: 1rem;
}
</style>
""",
unsafe_allow_html=True,
)