Spaces:
Sleeping
Sleeping
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') | |
# 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: | |
st.sidebar.markdown('## π§· Navigation') | |
category = st.sidebar.selectbox('π Select the Space', 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 the 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}") |