diff --git a/src/patternforge/generator.py b/src/patternforge/generator.py index bae999d..4860746 100644 --- a/src/patternforge/generator.py +++ b/src/patternforge/generator.py @@ -1,7 +1,9 @@ import json +import re from pathlib import Path from typing import Any +from patternforge.analyzer import CodeAnalyzer from patternforge.config import Config from patternforge.template import TemplateManager @@ -9,22 +11,26 @@ from patternforge.template import TemplateManager class BoilerplateGenerator: def __init__(self, config: Config) -> None: self.config = config + self.analyzer = CodeAnalyzer("python", config) self.template_manager = TemplateManager(config) + def _to_camel_case(self, snake: str) -> str: + if "_" not in snake: + return snake.lower() + parts = snake.split("_") + return parts[0].lower() + "".join(p.title() for p in parts[1:]) + + def _to_pascal_case(self, camel: str) -> str: + if "_" not in camel: + return camel[0].upper() + camel[1:] if camel else "" + parts = camel.split("_") + return "".join(p.title() for p in parts) + def _to_snake_case(self, name: str) -> str: - import re - s1 = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name) - return re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1).lower() - - def _to_camel_case(self, name: str) -> str: - components = name.replace("-", "_").split("_") - return components[0].lower() + "".join(x.title() for x in components[1:]) - - def _to_pascal_case(self, name: str) -> str: - camel = self._to_camel_case(name) - if not camel: - return "" - return camel[0].upper() + camel[1:] + if "_" in name: + return name.lower() + result = re.sub(r"(?