mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-23 18:34:19 +02:00
Migrate to markdown-code-runner's built-in include_section() (#1417)
This commit is contained in:
parent
74a795d907
commit
f9ccc946ee
11 changed files with 24 additions and 78 deletions
|
|
@ -1,61 +1,12 @@
|
|||
"""Documentation generation utilities for Adaptive Lighting.
|
||||
|
||||
Provides functions to extract sections from README.md and transform
|
||||
content for the documentation site. Used by markdown-code-runner
|
||||
to generate documentation pages from README content.
|
||||
Provides functions to transform content for the documentation site.
|
||||
Used by markdown-code-runner to generate documentation pages from README content.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
# Path to README relative to this module
|
||||
_MODULE_DIR = Path(__file__).parent
|
||||
README_PATH = _MODULE_DIR.parent.parent / "README.md"
|
||||
|
||||
|
||||
def readme_section(section_name: str, *, strip_heading: bool = True) -> str:
|
||||
"""Extract a marked section from README.md.
|
||||
|
||||
Sections are marked with HTML comments:
|
||||
<!-- SECTION:section_name:START -->
|
||||
content
|
||||
<!-- SECTION:section_name:END -->
|
||||
|
||||
Args:
|
||||
section_name: The name of the section to extract
|
||||
strip_heading: If True, remove the first heading from the section
|
||||
|
||||
Returns:
|
||||
The content between the section markers
|
||||
|
||||
Raises:
|
||||
ValueError: If the section is not found in README.md
|
||||
|
||||
"""
|
||||
content = README_PATH.read_text()
|
||||
|
||||
start_marker = f"<!-- SECTION:{section_name}:START -->"
|
||||
end_marker = f"<!-- SECTION:{section_name}:END -->"
|
||||
|
||||
start_idx = content.find(start_marker)
|
||||
if start_idx == -1:
|
||||
msg = f"Section '{section_name}' not found in README.md"
|
||||
raise ValueError(msg)
|
||||
|
||||
end_idx = content.find(end_marker, start_idx)
|
||||
if end_idx == -1:
|
||||
msg = f"End marker for section '{section_name}' not found"
|
||||
raise ValueError(msg)
|
||||
|
||||
section = content[start_idx + len(start_marker) : end_idx].strip()
|
||||
|
||||
if strip_heading:
|
||||
# Remove first heading (# or ## or ###)
|
||||
section = re.sub(r"^#{1,3}\s+[^\n]+\n+", "", section, count=1)
|
||||
|
||||
return _transform_readme_links(section)
|
||||
|
||||
|
||||
def _transform_readme_links(content: str) -> str:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue