Fix include paths and spacing (#31)
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
0.4.1
|
||||
-----
|
||||
|
||||
- Fix include paths and spacing
|
||||
`#31 <https://github.com/jdillard/sphinx-llms-txt/pull/31>`_
|
||||
|
||||
0.4.0
|
||||
-----
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ from .manager import LLMSFullManager
|
||||
from .processor import DocumentProcessor
|
||||
from .writer import FileWriter
|
||||
|
||||
__version__ = "0.4.0"
|
||||
__version__ = "0.4.1"
|
||||
|
||||
# Export classes needed by tests
|
||||
__all__ = [
|
||||
|
||||
@@ -243,9 +243,12 @@ class DocumentProcessor:
|
||||
"""
|
||||
possible_paths = []
|
||||
|
||||
# If it's an absolute path, use it directly
|
||||
# If it's an absolute path, treat it as relative to srcdir
|
||||
if os.path.isabs(include_path):
|
||||
possible_paths.append(Path(include_path))
|
||||
# Remove the leading slash and treat as relative to srcdir
|
||||
relative_path = include_path.lstrip("/")
|
||||
if self.srcdir:
|
||||
possible_paths.append((Path(self.srcdir) / relative_path).resolve())
|
||||
else:
|
||||
# Relative to the source file (in _sources directory)
|
||||
possible_paths.append((source_path.parent / include_path).resolve())
|
||||
@@ -286,6 +289,9 @@ class DocumentProcessor:
|
||||
# Function to replace each include with content
|
||||
def replace_include(match):
|
||||
include_path = match.group(3)
|
||||
directive_part = match.group(
|
||||
1
|
||||
) # The ".. include:: " part with leading whitespace
|
||||
|
||||
# Get all possible paths to try
|
||||
possible_paths = self._resolve_include_paths(include_path, source_path)
|
||||
@@ -296,7 +302,18 @@ class DocumentProcessor:
|
||||
if path_to_try.exists():
|
||||
with open(path_to_try, "r", encoding="utf-8") as f:
|
||||
included_content = f.read()
|
||||
|
||||
# Find where the actual directive starts, after any whitespace
|
||||
directive_start = directive_part.find("..")
|
||||
if directive_start > 0:
|
||||
# There's leading whitespace/newlines before the directive
|
||||
leading_part = directive_part[:directive_start]
|
||||
# Replace directive with content, preserving the structure
|
||||
return leading_part + included_content
|
||||
else:
|
||||
# No leading whitespace, just return the content
|
||||
return included_content
|
||||
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"sphinx-llms-txt: Error reading include file {path_to_try}:"
|
||||
@@ -308,6 +325,13 @@ class DocumentProcessor:
|
||||
paths_tried = ", ".join(str(p) for p in possible_paths)
|
||||
logger.warning(f"sphinx-llms-txt: Include file not found: {include_path}")
|
||||
logger.debug(f"sphinx-llms-txt: Tried paths: {paths_tried}")
|
||||
|
||||
# Preserve spacing structure for error message too
|
||||
directive_start = match.group(1).find("..")
|
||||
if directive_start > 0:
|
||||
leading_part = match.group(1)[:directive_start]
|
||||
return leading_part + f"[Include file not found: {include_path}]"
|
||||
else:
|
||||
return f"[Include file not found: {include_path}]"
|
||||
|
||||
# Replace all includes with their content
|
||||
|
||||
Reference in New Issue
Block a user