Skip to content

Commit

Permalink
support param_name_case
Browse files Browse the repository at this point in the history
  • Loading branch information
kosheverov committed Jun 23, 2023
1 parent d0579cb commit 841aaca
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 12 deletions.
8 changes: 7 additions & 1 deletion src/evgen/code_generators/c_sharp/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@

class CSharpGenerator:
@classmethod
def create(cls, dir_path: Path, class_name: str, single_param_tracker: bool):
def create(
cls,
dir_path: Path,
class_name: str,
single_param_tracker: bool,
param_name_case: str,
):
if single_param_tracker:
return stg.SingleParamTrackerGenerator(
dir_path=dir_path, class_name=class_name
Expand Down
8 changes: 7 additions & 1 deletion src/evgen/code_generators/java/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@

class JavaGenerator:
@classmethod
def create(cls, dir_path: Path, class_name: str, single_param_tracker: bool):
def create(
cls,
dir_path: Path,
class_name: str,
single_param_tracker: bool,
param_name_case: str,
):
if single_param_tracker:
return stg.SingleParamTrackerGenerator(
dir_path=dir_path, class_name=class_name
Expand Down
8 changes: 7 additions & 1 deletion src/evgen/code_generators/kotlin/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@

class KotlinGenerator:
@classmethod
def create(cls, dir_path: Path, class_name: str, single_param_tracker: bool):
def create(
cls,
dir_path: Path,
class_name: str,
single_param_tracker: bool,
param_name_case: str,
):
if single_param_tracker:
return stg.SingleParamTrackerGenerator(
dir_path=dir_path, class_name=class_name
Expand Down
8 changes: 7 additions & 1 deletion src/evgen/code_generators/swift/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@

class SwiftGenerator:
@classmethod
def create(cls, dir_path: Path, class_name: str, single_param_tracker: bool):
def create(
cls,
dir_path: Path,
class_name: str,
single_param_tracker: bool,
param_name_case: str,
):
if single_param_tracker:
return stg.SingleParamTrackerGenerator(
dir_path=dir_path, class_name=class_name
Expand Down
14 changes: 10 additions & 4 deletions src/evgen/code_generators/type_script/dict_tracker_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@


class TypeScriptEventFunctionSerializer(st.EventFunctionSerializer):
def __init__(self, class_name: str):
def __init__(self, class_name: str, param_name_case: str):
self._class_name = class_name
self.param_name_case = param_name_case

def get_event_function_enums(
self, function: evgen_code.Function
Expand All @@ -37,7 +38,9 @@ def get_event_function_header(
tracker_interface = st.Line(
f"{inflection.underscore(self._class_name)}: {self._class_name},"
)
param_interface = ts_helpers.get_function_params_interface(function.params)
param_interface = ts_helpers.get_function_params_interface(
function.params, self.param_name_case
)
if param_interface is None:
function_header = st.Closure(
function_header_start,
Expand Down Expand Up @@ -70,8 +73,9 @@ def get_event_function_param_structure(


class DictParamTrackerGenerator:
def __init__(self, dir_path: Path, class_name: str):
def __init__(self, dir_path: Path, class_name: str, param_name_case: str):
self.root_path = dir_path / class_name
self.param_name_case = param_name_case
if self.root_path.exists():
rmtree(self.root_path)
self.root_path.mkdir()
Expand Down Expand Up @@ -242,7 +246,9 @@ def _generate_namespace(self, namespace: str, functions: List[evgen_code.Functio
statements.append(
st.EventFunction(
function,
TypeScriptEventFunctionSerializer(class_name=self.class_name),
TypeScriptEventFunctionSerializer(
class_name=self.class_name, param_name_case=self.param_name_case
),
)
)

Expand Down
10 changes: 8 additions & 2 deletions src/evgen/code_generators/type_script/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@

class TypeScriptGenerator:
@classmethod
def create(cls, dir_path: Path, class_name: str, single_param_tracker: bool):
def create(
cls,
dir_path: Path,
class_name: str,
single_param_tracker: bool,
param_name_case: str,
):
if single_param_tracker:
return stg.SingleParamTrackerGenerator(dir_path, class_name)
else:
return dtg.DictParamTrackerGenerator(dir_path, class_name)
return dtg.DictParamTrackerGenerator(dir_path, class_name, param_name_case)

def generate(self, meta_code: evgen_meta_code.MetaCode):
raise NotImplementedError()
8 changes: 6 additions & 2 deletions src/evgen/code_generators/type_script/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def log_meta(meta: global_types.Meta) -> List[st.Statement]:


def get_function_params_interface(
params: List[evgen_code.Parameter],
params: List[evgen_code.Parameter], param_name_case: str
) -> Optional[st.Statement]:
interface_lines = []
param_counter = 0
Expand All @@ -146,12 +146,16 @@ def get_function_params_interface(
for param in params:
if isinstance(param.type, evgen_code.ConstType):
continue

param_name = (
param.code_name if param_name_case == "camel_case" else param.event_name
)
if param_counter != 0:
interface_single_str += "; "
interface_lines.append(st.Line(interface_single_str))
interface_single_str = ""
interface_single_str += (
f"{param.code_name}"
f"{param_name}"
f'{"?" if param.default_value is not None else ""}: {param.type.interface()}'
)
param_counter += 1
Expand Down
5 changes: 5 additions & 0 deletions src/evgen/evgen_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class CodeConfig:
language: str
output_dir: str
class_name: str
param_name_case: str
only_last_version: bool = False

@classmethod
Expand Down Expand Up @@ -56,12 +57,16 @@ def deserialize(cls, raw_dict: Dict[str, Any]) -> CodeConfig:
if isinstance(only_last_version, str) and only_last_version.lower() == "false":
only_last_version = False

default_case = "camel_case" if language == "type_script" else "snake_case"
param_name_case = raw_dict.get("param_name_case", default_case)

return CodeConfig(
platform=platform_name,
language=language,
output_dir=output_sub_dir,
class_name=class_name,
only_last_version=only_last_version,
param_name_case=param_name_case,
)


Expand Down
4 changes: 4 additions & 0 deletions src/evgen/scripts/run_evgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ def generate_code(
class_name: str,
single_param_tracker: bool,
only_last_version: bool,
param_name_case: str,
):
"""
Expand All @@ -67,10 +68,12 @@ def generate_code(
if single_param_tracker:
evgen_helpers.check_single_param(filtered_events)
meta_code = evgen_meta_code.generate_meta_code(filtered_events, only_last_version)

code_generator = CODE_GENERATORS[language].create(
dir_path=output_path,
class_name=class_name,
single_param_tracker=single_param_tracker,
param_name_case=param_name_case,
)
code_generator.generate(meta_code=meta_code)

Expand Down Expand Up @@ -107,6 +110,7 @@ def generate(
class_name=code_config.class_name,
single_param_tracker=config.single_param_tracker,
only_last_version=code_config.only_last_version,
param_name_case=code_config.param_name_case,
)

if config.doc:
Expand Down

0 comments on commit 841aaca

Please sign in to comment.