diff --git a/src/cli/cpl/cli/command/structure/generate.py b/src/cli/cpl/cli/command/structure/generate.py index 7a113000..150c75f1 100644 --- a/src/cli/cpl/cli/command/structure/generate.py +++ b/src/cli/cpl/cli/command/structure/generate.py @@ -1,5 +1,4 @@ import os -import re from pathlib import Path import click @@ -10,9 +9,9 @@ from cpl.cli.model.project import Project from cpl.cli.model.workspace import Workspace from cpl.cli.utils.structure import get_project_by_name_or_path from cpl.cli.utils.template_collector import TemplateCollector +from cpl.cli.utils.template_renderer import TemplateRenderer from cpl.core.configuration import Configuration from cpl.core.console import Console -from cpl.core.utils import String @cli.command("generate", aliases=["g"]) @@ -69,7 +68,9 @@ def generate(schematic: str, name: str, verbose: bool) -> None: Console.write_line(f"Generating {str(path / name)} ...") with open(path / f"{name}.py", "w") as f: f.write( - _render_template(schematics[schematic].split(".")[0], templates[schematics[schematic]], name, str(path)) + TemplateRenderer.render_template( + schematics[schematic].split(".")[0], templates[schematics[schematic]], name, str(path) + ) ) @@ -101,22 +102,3 @@ def _get_name_and_path_from_name(in_name: str, project: Project = None) -> tuple selected_project = workspace.get_project_by_name(workspace.default_project) return (Path(selected_project.path).parent / selected_project.directory / path).resolve().absolute(), name - - -def _render_template(schematic, template_str: str, name: str, path: str) -> str: - context = { - "schematic": schematic, - "Name": String.to_pascal_case(name), - "name": String.to_snake_case(name), - "NAME": String.to_snake_case(name).upper(), - "camelName": String.to_camel_case(name), - "multi_Name": f"{String.to_pascal_case(name)}s", - "multi_name": f"{String.to_snake_case(name)}s", - "multi_NAME": f"{String.to_snake_case(name).upper()}s", - "multi_camelName": f"{String.to_camel_case(name)}s", - "path": path.replace("\\", "/"), - } - - for key, value in context.items(): - template_str = template_str.replace(f"<{key}>", value) - return template_str diff --git a/src/cli/cpl/cli/utils/NameUtils.py b/src/cli/cpl/cli/utils/name-utils.py similarity index 100% rename from src/cli/cpl/cli/utils/NameUtils.py rename to src/cli/cpl/cli/utils/name-utils.py diff --git a/src/cli/cpl/cli/utils/template_renderer.py b/src/cli/cpl/cli/utils/template_renderer.py new file mode 100644 index 00000000..a6111f20 --- /dev/null +++ b/src/cli/cpl/cli/utils/template_renderer.py @@ -0,0 +1,23 @@ +from cpl.core.utils import String + + +class TemplateRenderer: + + @staticmethod + def render_template(schematic, template_str: str, name: str, path: str) -> str: + context = { + "schematic": schematic, + "Name": String.to_pascal_case(name), + "name": String.to_snake_case(name), + "NAME": String.to_snake_case(name).upper(), + "camelName": String.to_camel_case(name), + "multi_Name": f"{String.to_pascal_case(name)}s", + "multi_name": f"{String.to_snake_case(name)}s", + "multi_NAME": f"{String.to_snake_case(name).upper()}s", + "multi_camelName": f"{String.to_camel_case(name)}s", + "path": path.replace("\\", "/"), + } + + for key, value in context.items(): + template_str = template_str.replace(f"<{key}>", value) + return template_str \ No newline at end of file