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() |