diff --git a/Tools/migrate_c_params.py b/Tools/migrate_c_params.py index 042bdfb543..5d4e7a8bb6 100755 --- a/Tools/migrate_c_params.py +++ b/Tools/migrate_c_params.py @@ -128,6 +128,9 @@ class SourceParser: # start waiting for the next part - long comment. if state == "wait-short-end": state = "wait-long" + elif state == "wait-long-end": + # Preserve paragraph breaks in long description + long_desc += "\n" else: m = self.re_comment_tag.match(comment_content) if m: @@ -208,8 +211,7 @@ class SourceParser: raise Exception('short description too long (150 max, is {:}, parameter: {:})'.format(len(short_desc), name)) param.fields["short_desc"] = self.re_remove_dots.sub('', short_desc) if long_desc is not None: - long_desc = self.re_remove_carriage_return.sub(' ', long_desc) - param.fields["long_desc"] = long_desc + param.fields["long_desc"] = long_desc.rstrip('\n') for tag in tags: if tag == "group": group = tags[tag] @@ -407,7 +409,15 @@ def generate_yaml(filename: str, groups: list[ParameterGroup]) -> str: g["definitions"][parameter.name] = p data["parameters"].append(g) - return yaml.dump(data, sort_keys=False) + # Use block scalar style for multi-line strings + class BlockStyleDumper(yaml.SafeDumper): + pass + def str_representer(dumper, data): + if '\n' in data: + return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='|') + return dumper.represent_scalar('tag:yaml.org,2002:str', data) + BlockStyleDumper.add_representer(str, str_representer) + return yaml.dump(data, Dumper=BlockStyleDumper, sort_keys=False) def main(): diff --git a/Tools/module_config/generate_params.py b/Tools/module_config/generate_params.py index 4404873bb4..ea9e7d1ffc 100755 --- a/Tools/module_config/generate_params.py +++ b/Tools/module_config/generate_params.py @@ -108,7 +108,7 @@ def parse_yaml_parameters_config(yaml_config, ethernet_supported): tags = '@group {:}'.format(param_group) if param['type'] == 'enum': param_type = 'INT32' - for key in param['values']: + for key in sorted(param['values'], key=float): tags += '\n * @value {:} {:}'.format(key, param['values'][key]) elif param['type'] == 'bitmask': param_type = 'INT32' @@ -124,6 +124,9 @@ def parse_yaml_parameters_config(yaml_config, ethernet_supported): param_type = 'INT32' elif param['type'] == 'float': param_type = 'FLOAT' + if 'values' in param: + for key in sorted(param['values'], key=float): + tags += '\n * @value {:} {:}'.format(key, param['values'][key]) else: raise Exception("unknown param type {:}".format(param['type']))