diff --git a/src/rougail/output_formatter/__init__.py b/src/rougail/output_formatter/__init__.py index 468eb75..39ad805 100644 --- a/src/rougail/output_formatter/__init__.py +++ b/src/rougail/output_formatter/__init__.py @@ -51,7 +51,7 @@ from rougail.convert.object_model import ( NamespaceParam, Param, ) -from rougail.tiramisu import normalize_family +from rougail.tiramisu import normalize_family, RENAME_TYPE from rougail.utils import undefined from .upgrade import RougailUpgrade @@ -91,7 +91,7 @@ class RougailOutputFormatter: ) -> None: self.basic_types = { str: "string", - int: "number", + int: "integer", bool: "boolean", float: "float", } @@ -281,13 +281,18 @@ class RougailOutputFormatter: force_keys = list(yaml_data) multi = obj.multi or isinstance(obj.default, list) type_ = obj.type + if type_ in RENAME_TYPE: + type_ = RENAME_TYPE[type_] for attr, default_value in self.get_attributes( self.rougail.variable, ["name", "path", "namespace", "version", "xmlfiles"] ).items(): - try: - value = getattr(obj, attr) - except AttributeError: - continue + if attr == "type": + value = type_ + else: + try: + value = getattr(obj, attr) + except AttributeError: + continue if attr not in force_keys and value == default_value: continue value = self.object_to_yaml(attr, type_, value, multi, path) @@ -300,7 +305,7 @@ class RougailOutputFormatter: if "type" in variable and variable["type"] in [ "string", "boolean", - "number", + "integer", "float", ]: if variable["default"] and isinstance(variable["default"], list): @@ -405,6 +410,10 @@ class RougailOutputFormatter: for v in value: new_value = self.object_to_yaml(key, type_, v, multi, object_path) if key == "params": + if "min_number" in new_value: + new_value["min_integer"] = new_value.pop("min_number") + if "max_number" in new_value: + new_value["max_integer"] = new_value.pop("max_number") new_values.update(new_value) else: new_values.append(new_value) @@ -428,7 +437,10 @@ class RougailOutputFormatter: else: jinja["jinja"] = LiteralScalarString(jinja_values) if value.return_type: - jinja["return_type"] = value.return_type + return_type = value.return_type + if return_type in RENAME_TYPE: + return_type = RENAME_TYPE[return_type] + jinja["return_type"] = return_type if value.description: if "\n" in value.description: jinja["description"] = LiteralScalarString(value.description.strip()) diff --git a/src/rougail/output_formatter/upgrade.py b/src/rougail/output_formatter/upgrade.py index 01adba1..61b4dc7 100644 --- a/src/rougail/output_formatter/upgrade.py +++ b/src/rougail/output_formatter/upgrade.py @@ -105,7 +105,7 @@ class RougailUpgrade: new_root[key] = value for typ, obj in { "boolean": bool, - "number": int, + "integer": int, "string": str, "float": float, }.items(): diff --git a/tests/results/00_6choice_calculation/rougail/00-base.yml b/tests/results/00_6choice_calculation/rougail/00-base.yml index 95f6afe..b2af556 100644 --- a/tests/results/00_6choice_calculation/rougail/00-base.yml +++ b/tests/results/00_6choice_calculation/rougail/00-base.yml @@ -9,7 +9,7 @@ var: {% for n in trange(0, 10) %} {{ n }} {% endfor %} - return_type: number + return_type: integer description: choices is 0 to 9 default: 9 ... diff --git a/tests/results/00_6integer/rougail/00-base.yml b/tests/results/00_6integer/rougail/00-base.yml new file mode 100644 index 0000000..50ca4eb --- /dev/null +++ b/tests/results/00_6integer/rougail/00-base.yml @@ -0,0 +1,16 @@ +%YAML 1.2 +--- +version: 1.1 + +var1: 0 # the first variable + +var2: 0 # the second variable + +var3: 0 # the third variable + +var4: 10 # this forth variable + +var5: 10 # the fifth variable + +var6: 10 # the sixth variable +... diff --git a/tests/results/00_9default_integer/rougail/00-base.yml b/tests/results/00_9default_integer/rougail/00-base.yml index 23067c1..c2d9009 100644 --- a/tests/results/00_9default_integer/rougail/00-base.yml +++ b/tests/results/00_9default_integer/rougail/00-base.yml @@ -9,7 +9,7 @@ var: {% for item in trange(0, 10) %} {{ item }} {%- endfor %} - return_type: number + return_type: integer description: choice for 0 to 9 default: 9 ... diff --git a/tests/results/00_9default_number/rougail/00-base.yml b/tests/results/00_9default_number/rougail/00-base.yml new file mode 100644 index 0000000..c2d9009 --- /dev/null +++ b/tests/results/00_9default_number/rougail/00-base.yml @@ -0,0 +1,15 @@ +%YAML 1.2 +--- +version: 1.1 + +var: + description: a variable + choices: + jinja: |- + {% for item in trange(0, 10) %} + {{ item }} + {%- endfor %} + return_type: integer + description: choice for 0 to 9 + default: 9 +... diff --git a/tests/results/01_6number_multi/rougail/00-base.yml b/tests/results/01_6integer_multi/rougail/00-base.yml similarity index 100% rename from tests/results/01_6number_multi/rougail/00-base.yml rename to tests/results/01_6integer_multi/rougail/00-base.yml diff --git a/tests/results/04_0type_param/rougail/00-base.yml b/tests/results/04_0type_param/rougail/00-base.yml index 9bf8b11..01350f6 100644 --- a/tests/results/04_0type_param/rougail/00-base.yml +++ b/tests/results/04_0type_param/rougail/00-base.yml @@ -5,7 +5,7 @@ version: 1.1 int: description: A limited number params: - min_number: 0 - max_number: 100 + min_integer: 0 + max_integer: 100 default: 10 ... diff --git a/tests/results/04_0type_param_integer/rougail/00-base.yml b/tests/results/04_0type_param_integer/rougail/00-base.yml new file mode 100644 index 0000000..fadccac --- /dev/null +++ b/tests/results/04_0type_param_integer/rougail/00-base.yml @@ -0,0 +1,11 @@ +%YAML 1.2 +--- +version: 1.1 + +int: + description: A limited integer + params: + min_integer: 0 + max_integer: 100 + default: 10 +... diff --git a/tests/results/04_5validators/rougail/00-base.yml b/tests/results/04_5validators/rougail/00-base.yml index 36081d5..429306a 100644 --- a/tests/results/04_5validators/rougail/00-base.yml +++ b/tests/results/04_5validators/rougail/00-base.yml @@ -3,8 +3,8 @@ version: 1.1 int: - description: A number - type: number + description: An integer + type: integer validators: - jinja: |- {% if _.int > 100 %} diff --git a/tests/results/24_7validators_variable_optional/rougail/00-base.yml b/tests/results/24_7validators_variable_optional/rougail/00-base.yml index 6cd2251..aad7b88 100644 --- a/tests/results/24_7validators_variable_optional/rougail/00-base.yml +++ b/tests/results/24_7validators_variable_optional/rougail/00-base.yml @@ -5,10 +5,10 @@ version: 1.1 general: # a family int: - description: a first number + description: a first integer test: - 5 - type: number + type: integer validators: - jinja: |- {% if _.int == int2 %} @@ -29,5 +29,5 @@ general: # a family variable: _.int3 optional: true - int2: 1 # a second number + int2: 1 # a second integer ... diff --git a/tests/results/40_2leadership_calculation_index/rougail/00-base.yml b/tests/results/40_2leadership_calculation_index/rougail/00-base.yml index 0ca7bb2..8c70c64 100644 --- a/tests/results/40_2leadership_calculation_index/rougail/00-base.yml +++ b/tests/results/40_2leadership_calculation_index/rougail/00-base.yml @@ -13,7 +13,7 @@ leader: follower1: description: a follower - type: number + type: integer default: type: index ... diff --git a/tests/results/40_2leadership_calculation_param_index/rougail/00-base.yml b/tests/results/40_2leadership_calculation_param_index/rougail/00-base.yml index 1ab96aa..c18b4bd 100644 --- a/tests/results/40_2leadership_calculation_param_index/rougail/00-base.yml +++ b/tests/results/40_2leadership_calculation_param_index/rougail/00-base.yml @@ -13,7 +13,7 @@ leader: follower1: description: a follower - type: number + type: integer default: jinja: >- {{ index }} diff --git a/tests/results/40_8calculation_integer/rougail/00-base.yml b/tests/results/40_8calculation_integer/rougail/00-base.yml index 1718a79..d913c12 100644 --- a/tests/results/40_8calculation_integer/rougail/00-base.yml +++ b/tests/results/40_8calculation_integer/rougail/00-base.yml @@ -6,7 +6,7 @@ bool: false # a boolean variable int1: description: first integer variable - type: number + type: integer default: jinja: >- {% if rougail.bool %} @@ -18,7 +18,7 @@ int1: int2: description: second integer variable - type: number + type: integer default: jinja: >- {% if not rougail.bool %} diff --git a/tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_jinja_integer_empty/rougail/00-base.yml similarity index 96% rename from tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml rename to tests/results/60_0family_dynamic_jinja_integer_empty/rougail/00-base.yml index 9dafe97..0b55e83 100644 --- a/tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml +++ b/tests/results/60_0family_dynamic_jinja_integer_empty/rougail/00-base.yml @@ -7,7 +7,7 @@ var: test: - 1 - 2 - type: number + type: integer multi: true mandatory: false diff --git a/tests/test_load.py b/tests/test_load.py index c28e4ea..3eba682 100644 --- a/tests/test_load.py +++ b/tests/test_load.py @@ -15,7 +15,7 @@ excludes = [ ] test_ok = get_structures_list(excludes) -# test_ok = [Path('../rougail-tests/structures/60_6family_dynamic_sub_dynamic_1_0_2')] +# test_ok = [Path('../rougail-tests/structures/04_0type_param')] def idfn(fixture_value):