diff --git a/net_api_generator/generator.py b/net_api_generator/generator.py index 6e5dce0cbfb968f268ae911c7dbc359dd8c80273..06db9cc58d2476cd344a16c64c41c00d7db72b99 100644 --- a/net_api_generator/generator.py +++ b/net_api_generator/generator.py @@ -324,7 +324,11 @@ def typescript(output_dir): def generate_api_function(api_function: ApiFunction)->str: - api_call = ("$METHOD_NAME (config: AxiosConfig, $FUNCTION_PARAMETER)$RETURN_TYPE {\n" + api_call = ("/**\n" + "* @param {AxiosConfig} config AxiosConfig\n" + "$PARAMETER_DESCRIPTION_COMMENTS\n" + "*/\n" + "$METHOD_NAME (config: AxiosConfig, $FUNCTION_PARAMETER)$RETURN_TYPE {\n" "\tconst requestData: $AXIOS_REQUEST_DATA = $REQUEST_DATA\n\n" "\tconst axiosRequestConfig: AxiosRequestConfig<$AXIOS_REQUEST_DATA> = {\n" @@ -354,18 +358,19 @@ def typescript(output_dir): function_parameters = "" request_data = {"old": "", "new": ""} number_parameters = len(seperated_parameters['old']) + len(seperated_parameters['new']) + parameter_description_comments = "" for parameter_scope, parameter_list in seperated_parameters.items(): for i, parameter in enumerate(parameter_list): - if api_function.name == "update": - print("Update!") parameter_definition = "'$PARAMETER_NAME': $PARAMETER_NAME_REFERENCE" if i > 0 else "\t\t'$PARAMETER_NAME': $PARAMETER_NAME_REFERENCE" + parameter_name_reference = parameter.name if api_function.is_data_manipulating: - function_parameter_item = f"{parameter.name}_{parameter_scope}: {map_netdb_type_to_typescript_type(parameter.data_type)}" - request_data[parameter_scope] += f"f{parameter.name}: {parameter.name}_{parameter_scope}" + parameter_name_reference = parameter.name + "_" + parameter_scope + function_parameter_item = f"{parameter_name_reference}: {map_netdb_type_to_typescript_type(parameter.data_type)}" + request_data[parameter_scope] += f"f{parameter.name}: {parameter_name_reference}" if i < len(parameter_list) - 1: request_data[parameter_scope] += ", \n\t\t\t" else: - function_parameter_item = f"{parameter.name}: {map_netdb_type_to_typescript_type(parameter.data_type)}" + function_parameter_item = f"{parameter_name_reference}: {map_netdb_type_to_typescript_type(parameter.data_type)}" if parameter.data_type['json_name'] == "array": parameter_definition = parameter_definition.replace("$PARAMETER_NAME_REFERENCE", "($PARAMETER_NAME === null) ? null: JSON.stringify($PARAMETER_NAME)") @@ -373,7 +378,7 @@ def typescript(output_dir): parameter_definition = parameter_definition.replace("$PARAMETER_NAME_REFERENCE", "$PARAMETER_NAME") - parameter_definition = parameter_definition.replace("$PARAMETER_NAME", parameter.name) + parameter_definition = parameter_definition.replace("$PARAMETER_NAME", parameter_name_reference) if parameter_counter < number_parameters - 1: parameter_definition += ",\n\t\t" request_data["old"] += parameter_definition @@ -388,11 +393,29 @@ def typescript(output_dir): else: function_parameters += function_parameter_item + # generate parameter description comments + parameter_description_comment = f"* @param {{{map_netdb_type_to_typescript_type(parameter.data_type)}}} {parameter_name_reference} {parameter.description_detail}" + if len(parameter_description_comments) > 120: + parameter_description_word_splitted = parameter_description_comment.split(" ") + parameter_description_comment = "" + current_line_length = 0 + for j, word in enumerate(parameter_description_word_splitted): + if current_line_length < 120 or j == len(parameter_description_word_splitted) - 1: + parameter_description_comment += word + " " + else: + parameter_description_comment += f"\n * {word} " + current_line_length = 0 + current_line_length += len(word) + + parameter_description_comments += parameter_description_comment + if parameter_counter < number_parameters - 1: + parameter_description_comments += "\n" + parameter_counter += 1 api_call = api_call.replace("$FUNCTION_PARAMETER", function_parameters) - + api_call = api_call.replace("$PARAMETER_DESCRIPTION_COMMENTS", parameter_description_comments) # determine the type of request: Update, Create, Delete or List? request_data_declaration_code = "" if api_function.is_data_manipulating: