Skip to content

Commit 63aa58c

Browse files
committed
abstract nonvoid formatted template
1 parent 22ae1ce commit 63aa58c

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
66

77
[project]
88
name = "leetcode-project-generator"
9-
version = "1.5.0"
9+
version = "1.5.1"
1010
authors = [
1111
{ name = "Konrad Guzek", email = "[email protected]" },
1212
]

src/lpg/interfaces/lang/base.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import re
44
from abc import ABCMeta, abstractmethod
5-
from typing import Any, Match, Pattern
5+
from typing import Any, Callable, Match, Pattern
66

77
from ...constants import OUTPUT_RESULT_PREFIX
88

@@ -74,6 +74,20 @@ def get_supplemental_code(self, template: str) -> str | None:
7474
if match is not None
7575
)
7676

77+
def get_formatted_nonvoid_template(
78+
self, template: str, nonvoid_callback: Callable[[], str]
79+
) -> str:
80+
"""Adjusts the return type and method call when the return type is void.
81+
Useful for C-style languages where assigning to a void variable is not allowed.
82+
"""
83+
if self.groups["returnType"] == "void":
84+
self.groups["result_var_declaration"] = ""
85+
self.groups["result_var"] = "0"
86+
return template
87+
self.groups["result_var_declaration"] = f"{self.groups['returnType']} result = "
88+
self.groups["result_var"] = "result"
89+
return nonvoid_callback()
90+
7791
def add_newline(
7892
self, value: str | None, num_newlines: int = 1, prefix: str = ""
7993
) -> str:

src/lpg/interfaces/lang/c.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,12 @@ def prepare_project_files(self, template: str):
4949
if headers != "":
5050
headers += "\n"
5151

52-
if self.groups["returnType"] == "void":
53-
self.groups["result_var_declaration"] = ""
54-
self.groups["result_var"] = "0"
55-
formatted_template = template
56-
else:
57-
self.groups["result_var_declaration"] = (
58-
f"{self.groups['returnType']} result = "
59-
)
60-
self.groups["result_var"] = "result"
61-
formatted_template = re.sub(
52+
formatted_template = self.get_formatted_nonvoid_template(
53+
template,
54+
lambda: re.sub(
6255
SOLUTION_REPLACEMENT_PATTERN, SOLUTION_REPLACEMENT_TEMPLATE, template
63-
)
56+
),
57+
)
6458

6559
return {
6660
"solution.c": f"{headers}{formatted_template}\n",

src/lpg/interfaces/lang/java.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,14 @@ def prepare_project_files(self, template: str):
6666
)
6767
self.groups["params_call"] = ", ".join(param.split()[-1] for param in params)
6868

69-
if self.groups["returnType"] == "void":
70-
self.groups["result_var_declaration"] = ""
71-
self.groups["result_var"] = "0"
72-
formatted_template = template
73-
else:
74-
self.groups["result_var_declaration"] = (
75-
f"{self.groups['returnType']} result = "
76-
)
77-
self.groups["result_var"] = "result"
78-
formatted_template = re.sub(
69+
formatted_template = self.get_formatted_nonvoid_template(
70+
template,
71+
lambda: re.sub(
7972
SOLUTION_REPLACEMENT_PATTERN,
8073
SOLUTION_REPLACEMENT_TEMPLATE.format(return_value=self.default_output),
8174
template,
82-
)
75+
),
76+
)
8377

8478
project_files = {
8579
"Solution.java": f"{UTIL_IMPORT_TEMPLATE}{formatted_template}\n",

0 commit comments

Comments
 (0)