fix: handle Windows-style paths in fname_to_url function

This commit is contained in:
Paul Gauthier (aider) 2024-10-21 14:32:01 -07:00
parent 3ce1cfb908
commit eaaf05d964

View file

@ -44,6 +44,9 @@ def fname_to_url(filepath):
index = "index.md" index = "index.md"
md = ".md" md = ".md"
# Convert backslashes to forward slashes for consistency
filepath = filepath.replace('\\', '/')
# Convert to Path object for easier manipulation # Convert to Path object for easier manipulation
path = Path(filepath) path = Path(filepath)
@ -52,29 +55,29 @@ def fname_to_url(filepath):
# Find the 'website' part in the path # Find the 'website' part in the path
try: try:
website_index = parts.index(website) website_index = [p.lower() for p in parts].index(website.lower())
except ValueError: except ValueError:
return "" # 'website' not found in the path return "" # 'website' not found in the path
# Extract the part of the path starting from 'website' # Extract the part of the path starting from 'website'
relevant_parts = parts[website_index + 1 :] relevant_parts = parts[website_index + 1:]
# Handle _includes directory # Handle _includes directory
if relevant_parts and relevant_parts[0] == "_includes": if relevant_parts and relevant_parts[0].lower() == "_includes":
return "" return ""
# Join the remaining parts # Join the remaining parts
url_path = "/".join(relevant_parts) url_path = '/'.join(relevant_parts)
# Handle index.md and other .md files # Handle index.md and other .md files
if url_path.endswith(index): if url_path.lower().endswith(index.lower()):
url_path = url_path[: -len(index)] url_path = url_path[:-len(index)]
elif url_path.endswith(md): elif url_path.lower().endswith(md.lower()):
url_path = url_path[: -len(md)] + ".html" url_path = url_path[:-len(md)] + ".html"
# Ensure the URL starts and ends with '/' # Ensure the URL starts and ends with '/'
url_path = url_path.strip("/") url_path = url_path.strip('/')
return f"https://aider.chat/{url_path}" return f"https://aider.chat/{url_path}"