Skip to content

Commit 199a6d1

Browse files
committed
apply new indent() and render_javadoc() functions
1 parent aab16bf commit 199a6d1

4 files changed

Lines changed: 57 additions & 85 deletions

File tree

src/enum_generator.py

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import re
22
from typing import List
33

4-
from src.java_model import EnumClass, indent_lvl1, indent_lvl2, indent_lvl3
5-
from src.header_generator import set_package
4+
from src.java_model import EnumClass, indent
5+
from src.header_generator import set_package, render_javadoc
66

77

88
def to_java_constant(value: str) -> str:
@@ -22,14 +22,14 @@ def generate_enum_class(enum_class: EnumClass, package: str) -> str:
2222
f"import java.util.HashMap;",
2323
f"import java.util.Map;",
2424
f"",
25-
_get_javadoc(enum_class.description),
25+
render_javadoc(enum_class.description, indent_lvl=0),
2626
f"public enum {enum_class.name} {{",
2727
_get_constants(enum_class.values),
2828
f"",
29-
f"{indent_lvl1}private final static Map<String, {enum_class.name}> CONSTANTS = new HashMap<String, {enum_class.name}>();",
29+
f"{indent(1)}private final static Map<String, {enum_class.name}> CONSTANTS = new HashMap<String, {enum_class.name}>();",
3030
_get_static_method(enum_class.name),
3131
f"",
32-
f"{indent_lvl1}private final String value;",
32+
f"{indent(1)}private final String value;",
3333
_get_constructor(enum_class.name),
3434
_get_from_value_method(enum_class.name),
3535
_get_to_string_method(),
@@ -41,81 +41,69 @@ def generate_enum_class(enum_class: EnumClass, package: str) -> str:
4141
return "\n".join(enum_body)
4242

4343

44-
def _get_javadoc(description: str) -> str:
45-
javadoc = [""]
46-
if description is not None:
47-
javadoc = [
48-
"",
49-
"/**",
50-
f" * {description}",
51-
" */"
52-
]
53-
return "\n".join(javadoc)
54-
55-
5644
def _get_constants(constants: List[str]) -> str:
5745
values = []
5846
for i, value in enumerate(constants):
5947
line_end = ";" if i == (len(constants) - 1) else ","
6048
values.append(
61-
f'{indent_lvl1}{to_java_constant(value)}("{value}"){line_end}'
49+
f'{indent(1)}{to_java_constant(value)}("{value}"){line_end}'
6250
)
6351
return "\n".join(values)
6452

6553

6654
def _get_static_method(class_name: str) -> str:
6755
body = [
6856
"",
69-
f"{indent_lvl1}static {{",
70-
f"{indent_lvl2}for ({class_name} c : values()) {{",
71-
f"{indent_lvl3}CONSTANTS.put(c.value, c);",
72-
f"{indent_lvl2}}}",
73-
f"{indent_lvl1}}}"
57+
f"{indent(1)}static {{",
58+
f"{indent(2)}for ({class_name} c : values()) {{",
59+
f"{indent(3)}CONSTANTS.put(c.value, c);",
60+
f"{indent(2)}}}",
61+
f"{indent(1)}}}"
7462
]
7563
return "\n".join(body)
7664

7765

7866
def _get_constructor(class_name: str) -> str:
7967
body = [
8068
"",
81-
f"{indent_lvl1}{class_name}(String value) {{",
82-
f"{indent_lvl2}this.value = value;",
83-
f"{indent_lvl1}}}"
69+
f"{indent(1)}{class_name}(String value) {{",
70+
f"{indent(2)}this.value = value;",
71+
f"{indent(1)}}}"
8472
]
8573
return "\n".join(body)
8674

8775

8876
def _get_from_value_method(class_name: str) -> str:
8977
body = [
9078
"",
91-
f"{indent_lvl1}public static {class_name} fromValue(String value) {{",
92-
f"{indent_lvl2}{class_name} constant = CONSTANTS.get(value);",
93-
f"{indent_lvl2}if (constant == null) {{",
94-
f"{indent_lvl3}throw new IllegalArgumentException(value);",
95-
f"{indent_lvl2}}} else {{",
96-
f"{indent_lvl3}return constant;",
97-
f"{indent_lvl2}}}",
98-
f"{indent_lvl1}}}"
79+
f"{indent(1)}public static {class_name} fromValue(String value) {{",
80+
f"{indent(2)}{class_name} constant = CONSTANTS.get(value);",
81+
f"{indent(2)}if (constant == null) {{",
82+
f"{indent(3)}throw new IllegalArgumentException(value);",
83+
f"{indent(2)}}} else {{",
84+
f"{indent(3)}return constant;",
85+
f"{indent(2)}}}",
86+
f"{indent(1)}}}"
9987
]
10088
return "\n".join(body)
10189

10290

10391
def _get_to_string_method() -> str:
10492
body = [
10593
"",
106-
f"{indent_lvl1}@Override",
107-
f"{indent_lvl1}public String toString() {{",
108-
f"{indent_lvl2}return this.value;",
109-
f"{indent_lvl1}}}"
94+
f"{indent(1)}@Override",
95+
f"{indent(1)}public String toString() {{",
96+
f"{indent(2)}return this.value;",
97+
f"{indent(1)}}}"
11098
]
11199
return "\n".join(body)
112100

113101

114102
def _get_value_method() -> str:
115103
body = [
116104
"",
117-
f"{indent_lvl1}public String value() {{",
118-
f"{indent_lvl2}return this.value;",
119-
f"{indent_lvl1}}}"
105+
f"{indent(1)}public String value() {{",
106+
f"{indent(2)}return this.value;",
107+
f"{indent(1)}}}"
120108
]
121109
return "\n".join(body)

src/header_generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def set_imports(fields: List[Field]) -> str:
2121

2222

2323
def render_javadoc(description: Union[str, None], indent_lvl: int) -> str:
24-
if description is None or description == "":
24+
if not description:
2525
return ""
2626

2727
return "\n".join([

src/java_method_generator.py

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import re
22
from typing import List
33

4-
from src.java_model import JAVA_KEYWORDS, JAVA_BUILTIN_TYPES, JAVA_LITERALS, indent_lvl1, indent_lvl2, indent_lvl3, \
5-
return_indent, Field
4+
from src.header_generator import render_javadoc
5+
from src.java_model import JAVA_KEYWORDS, JAVA_BUILTIN_TYPES, JAVA_LITERALS, Field, indent
66

77

88
def generate_fields_block(fields: List[Field]) -> str:
@@ -17,24 +17,12 @@ def generate_field_declaration(field: Field) -> str:
1717
_validate_java_field_name(field.name)
1818

1919
declaration = [
20-
_render_javadoc(field),
21-
f"{indent_lvl1}private {field.type} {field.name};"
20+
render_javadoc(field.description, indent_lvl=1),
21+
f"{indent(1)}private {field.type} {field.name};"
2222
]
2323
return "\n".join(declaration)
2424

2525

26-
def _render_javadoc(field: Field) -> str:
27-
if field.description is None:
28-
return ""
29-
30-
return "\n".join([
31-
"",
32-
f"{indent_lvl1}/**",
33-
f"{indent_lvl1} * {field.description}",
34-
f"{indent_lvl1} */"
35-
])
36-
37-
3826
def generate_getters_and_setters(fields: List[Field]) -> str:
3927
methods = []
4028
for field in fields:
@@ -49,9 +37,9 @@ def generate_getter(field: Field) -> str:
4937

5038
getter = [
5139
"",
52-
f"{indent_lvl1}public {field.type} {getter_name}() {{",
53-
f"{indent_lvl2}return {field.name};",
54-
f"{indent_lvl1}}}"
40+
f"{indent(1)}public {field.type} {getter_name}() {{",
41+
f"{indent(2)}return {field.name};",
42+
f"{indent(1)}}}"
5543
]
5644
return "\n".join(getter)
5745

@@ -61,29 +49,29 @@ def generate_setter(field: Field) -> str:
6149

6250
setter = [
6351
"",
64-
f"{indent_lvl1}public void {setter_name}({field.type} {field.name}) {{",
65-
f"{indent_lvl2}this.{field.name} = {field.name};",
66-
f"{indent_lvl1}}}"
52+
f"{indent(1)}public void {setter_name}({field.type} {field.name}) {{",
53+
f"{indent(2)}this.{field.name} = {field.name};",
54+
f"{indent(1)}}}"
6755
]
6856
return "\n".join(setter)
6957

7058

7159
def generate_equals(class_name: str, fields: List[Field]) -> str:
7260
equals = [
7361
"",
74-
f"{indent_lvl1}@Override",
75-
f"{indent_lvl1}public boolean equals(Object obj) {{",
62+
f"{indent(1)}@Override",
63+
f"{indent(1)}public boolean equals(Object obj) {{",
7664

77-
f"{indent_lvl2}if (this == obj)",
78-
f"{indent_lvl3}return true;",
65+
f"{indent(2)}if (this == obj)",
66+
f"{indent(3)}return true;",
7967

80-
f"{indent_lvl2}if (!(obj instanceof {class_name}))",
81-
f"{indent_lvl3}return false;",
68+
f"{indent(2)}if (!(obj instanceof {class_name}))",
69+
f"{indent(3)}return false;",
8270

83-
f"{indent_lvl2}{class_name} that = ({class_name}) obj;",
71+
f"{indent(2)}{class_name} that = ({class_name}) obj;",
8472

8573
_render_equals_return_statement(fields),
86-
f"{indent_lvl1}}}"
74+
f"{indent(1)}}}"
8775
]
8876

8977
return "\n".join(equals)
@@ -95,20 +83,20 @@ def _render_equals_return_statement(fields: List[Field]) -> str:
9583
getter_name = _build_getter_name(field.name)
9684
end_line = ";" if i == (len(fields) - 1) else ""
9785
if i == 0:
98-
return_statement.append(f"{indent_lvl2}return Objects.equals({getter_name}(), that.{getter_name}()){end_line}")
86+
return_statement.append(f"{indent(2)}return Objects.equals({getter_name}(), that.{getter_name}()){end_line}")
9987
else:
10088
return_statement.append(
101-
f"{indent_lvl2}{return_indent}&& Objects.equals({getter_name}(), that.{getter_name}()){end_line}")
89+
f"{indent(4)}&& Objects.equals({getter_name}(), that.{getter_name}()){end_line}")
10290
return "\n".join(return_statement)
10391

10492

10593
def generate_hash_code(fields: List[Field]) -> str:
10694
hash_code = [
10795
"",
108-
f"{indent_lvl1}@Override",
109-
f"{indent_lvl1}public int hashCode() {{",
96+
f"{indent(1)}@Override",
97+
f"{indent(1)}public int hashCode() {{",
11098
_render_hashcode_return_statement(fields),
111-
f"{indent_lvl1}}}"
99+
f"{indent(1)}}}"
112100
]
113101

114102
return "\n".join(hash_code)
@@ -124,17 +112,17 @@ def _render_hashcode_return_statement(fields: List[Field]) -> str:
124112
def _render_hashcode_return_statement_single_field(fields: List[Field]) -> str:
125113
field_name = fields[0].name
126114
getter_name = _build_getter_name(field_name)
127-
return f"{indent_lvl2}return Objects.hash({getter_name}());"
115+
return f"{indent(2)}return Objects.hash({getter_name}());"
128116

129117

130118
def _render_hashcode_return_statement_multiple_field(fields: List[Field]) -> str:
131-
return_statement = [f"{indent_lvl2}return Objects.hash("]
119+
return_statement = [f"{indent(2)}return Objects.hash("]
132120
for index, field in enumerate(fields):
133121
getter_name = _build_getter_name(field.name)
134122
comma = "," if index < (len(fields) - 1) else ""
135-
return_statement.append(f"{indent_lvl2}{return_indent}{getter_name}(){comma}")
123+
return_statement.append(f"{indent(4)}{getter_name}(){comma}")
136124

137-
return_statement.append(f"{indent_lvl2});")
125+
return_statement.append(f"{indent(2)});")
138126

139127
return "\n".join(return_statement)
140128

src/java_model.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
JAVA_LITERALS = {
1919
"null", "true", "false"
2020
}
21-
indent_lvl1 = " " * 4
22-
indent_lvl2 = indent_lvl1 * 2
23-
indent_lvl3 = indent_lvl1 * 3
24-
return_indent = " "
2521

2622

2723
@dataclass

0 commit comments

Comments
 (0)