Source code for super_pocket.readme.generator

"""Main README generator."""

from typing import List
from .models import ProjectContext
from .templates.base import (
    TitleSection,
    PrerequisitesSection,
    InstallationSection,
    ProjectStructureSection
)
from .badges import BadgeGenerator, BadgeType


[docs] class ReadmeGenerator: """Generate README files from project context."""
[docs] def __init__(self): """Initialize generator with section templates.""" self.badge_generator = BadgeGenerator() # Baseline sections (always included) self.baseline_sections = { "title": TitleSection(), "prerequisites": PrerequisitesSection(), "installation": InstallationSection(), "structure": ProjectStructureSection() } # Optional sections self.optional_sections = { "running-tests": self._running_tests_section, }
[docs] def generate( self, context: ProjectContext, selected_badges: List[BadgeType], selected_sections: List[str] ) -> str: """ Generate README content. Args: context: Project context selected_badges: List of badge types to include selected_sections: List of optional section IDs to include Returns: Complete README markdown content """ sections = [] # Title section sections.append(self.baseline_sections["title"].generate(context)) sections.append("") # Badges if selected_badges: badge_lines = [] for badge_type in selected_badges: badge_md = self.badge_generator.generate_badge(badge_type, context) if badge_md: badge_lines.append(badge_md) if badge_lines: sections.append(" ".join(badge_lines)) sections.append("") # Baseline sections sections.append(self.baseline_sections["prerequisites"].generate(context)) sections.append("") sections.append(self.baseline_sections["installation"].generate(context)) sections.append("") sections.append(self.baseline_sections["structure"].generate(context)) sections.append("") # Optional sections for section_id in selected_sections: if section_id in self.optional_sections: section_func = self.optional_sections[section_id] sections.append(section_func(context)) sections.append("") return "\n".join(sections)
def _running_tests_section(self, context: ProjectContext) -> str: """Generate running tests section.""" lines = ["## Running Tests"] lines.append("") lines.append("```bash") if context.language == "python": if context.test_framework == "pytest": lines.append("pytest") else: lines.append("python -m pytest") lines.append("```") return "\n".join(lines)