Source code for todowrite.tools.extract_schema

from __future__ import annotations

import json
import re
from pathlib import Path


[docs] def extract_and_write_schema( markdown_path: Path, schema_output_path: Path ) -> None: """ Extracts the JSON schema from a Markdown file and writes it to a specified output path. """ try: markdown_content = markdown_path.read_text() # Regex to find the JSON schema block in the Markdown file match = re.search( r"```json\n({.*?})\n```", markdown_content, re.DOTALL ) if match: schema_json_str = match.group(1) schema_data = json.loads(schema_json_str) schema_output_path.parent.mkdir(parents=True, exist_ok=True) with open(schema_output_path, "w") as f: json.dump(schema_data, f, indent=2) print( f"✅ JSON schema extracted from {markdown_path} and written to {schema_output_path}" ) else: print(f"❌ No JSON schema block found in {markdown_path}") exit(1) except FileNotFoundError: print(f"❌ Markdown file not found: {markdown_path}") exit(1) except json.JSONDecodeError as e: print(f"❌ Invalid JSON in schema block: {e}") exit(1) except (ValueError, KeyError, AttributeError) as e: print(f"❌ An unexpected error occurred: {e}") exit(1)
if __name__ == "__main__": # Assuming the script is run from the project root project_root = Path(__file__).resolve().parent.parent.parent.parent markdown_file = project_root / "ToDoWrite.md" schema_file = ( project_root / "ToDoWrite" / "ToDoWrite" / "schemas" / "ToDoWrite.schema.json" ) extract_and_write_schema(markdown_file, schema_file)