119 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
#!/usr/bin/env python3
 | 
						|
"""Generate API reference documentation for McRogueFace - Simple version."""
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import datetime
 | 
						|
from pathlib import Path
 | 
						|
 | 
						|
import mcrfpy
 | 
						|
 | 
						|
def generate_markdown_docs():
 | 
						|
    """Generate markdown API documentation."""
 | 
						|
    lines = []
 | 
						|
    
 | 
						|
    # Header
 | 
						|
    lines.append("# McRogueFace API Reference")
 | 
						|
    lines.append("")
 | 
						|
    lines.append("*Generated on {}*".format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
 | 
						|
    lines.append("")
 | 
						|
    
 | 
						|
    # Module description
 | 
						|
    if mcrfpy.__doc__:
 | 
						|
        lines.append("## Overview")
 | 
						|
        lines.append("")
 | 
						|
        lines.extend(mcrfpy.__doc__.strip().split('\n'))
 | 
						|
        lines.append("")
 | 
						|
    
 | 
						|
    # Collect all components
 | 
						|
    classes = []
 | 
						|
    functions = []
 | 
						|
    
 | 
						|
    for name in sorted(dir(mcrfpy)):
 | 
						|
        if name.startswith('_'):
 | 
						|
            continue
 | 
						|
        
 | 
						|
        obj = getattr(mcrfpy, name)
 | 
						|
        
 | 
						|
        if isinstance(obj, type):
 | 
						|
            classes.append((name, obj))
 | 
						|
        elif callable(obj):
 | 
						|
            functions.append((name, obj))
 | 
						|
    
 | 
						|
    # Document classes
 | 
						|
    lines.append("## Classes")
 | 
						|
    lines.append("")
 | 
						|
    
 | 
						|
    for name, cls in classes:
 | 
						|
        lines.append("### class {}".format(name))
 | 
						|
        if cls.__doc__:
 | 
						|
            doc_lines = cls.__doc__.strip().split('\n')
 | 
						|
            for line in doc_lines[:5]:  # First 5 lines
 | 
						|
                lines.append(line)
 | 
						|
        lines.append("")
 | 
						|
        lines.append("---")
 | 
						|
        lines.append("")
 | 
						|
    
 | 
						|
    # Document functions  
 | 
						|
    lines.append("## Functions")
 | 
						|
    lines.append("")
 | 
						|
    
 | 
						|
    for name, func in functions:
 | 
						|
        lines.append("### {}".format(name))
 | 
						|
        if func.__doc__:
 | 
						|
            doc_lines = func.__doc__.strip().split('\n')
 | 
						|
            for line in doc_lines[:5]:  # First 5 lines
 | 
						|
                lines.append(line)
 | 
						|
        lines.append("")
 | 
						|
        lines.append("---")
 | 
						|
        lines.append("")
 | 
						|
    
 | 
						|
    # Automation module
 | 
						|
    if hasattr(mcrfpy, 'automation'):
 | 
						|
        lines.append("## Automation Module")
 | 
						|
        lines.append("")
 | 
						|
        
 | 
						|
        automation = mcrfpy.automation
 | 
						|
        for name in sorted(dir(automation)):
 | 
						|
            if not name.startswith('_'):
 | 
						|
                obj = getattr(automation, name)
 | 
						|
                if callable(obj):
 | 
						|
                    lines.append("### automation.{}".format(name))
 | 
						|
                    if obj.__doc__:
 | 
						|
                        lines.append(obj.__doc__.strip().split('\n')[0])
 | 
						|
                    lines.append("")
 | 
						|
    
 | 
						|
    return '\n'.join(lines)
 | 
						|
 | 
						|
def main():
 | 
						|
    """Generate API documentation."""
 | 
						|
    print("Generating McRogueFace API Documentation...")
 | 
						|
    
 | 
						|
    # Create docs directory
 | 
						|
    docs_dir = Path("docs")
 | 
						|
    docs_dir.mkdir(exist_ok=True)
 | 
						|
    
 | 
						|
    # Generate markdown
 | 
						|
    markdown_content = generate_markdown_docs()
 | 
						|
    
 | 
						|
    # Write markdown
 | 
						|
    md_path = docs_dir / "API_REFERENCE.md"
 | 
						|
    with open(md_path, 'w') as f:
 | 
						|
        f.write(markdown_content)
 | 
						|
    print("Written to {}".format(md_path))
 | 
						|
    
 | 
						|
    # Summary
 | 
						|
    lines = markdown_content.split('\n')
 | 
						|
    class_count = markdown_content.count('### class')
 | 
						|
    func_count = markdown_content.count('### ') - class_count - markdown_content.count('### automation.')
 | 
						|
    
 | 
						|
    print("\nDocumentation Statistics:")
 | 
						|
    print("- Classes documented: {}".format(class_count))
 | 
						|
    print("- Functions documented: {}".format(func_count))
 | 
						|
    print("- Total lines: {}".format(len(lines)))
 | 
						|
    
 | 
						|
    print("\nAPI documentation generated successfully!")
 | 
						|
    sys.exit(0)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main() |