feat: add integer type which will replace number type
This commit is contained in:
parent
319f9eab1f
commit
3c33c1927a
16 changed files with 78 additions and 24 deletions
|
|
@ -51,7 +51,7 @@ from rougail.convert.object_model import (
|
||||||
NamespaceParam,
|
NamespaceParam,
|
||||||
Param,
|
Param,
|
||||||
)
|
)
|
||||||
from rougail.tiramisu import normalize_family
|
from rougail.tiramisu import normalize_family, RENAME_TYPE
|
||||||
from rougail.utils import undefined
|
from rougail.utils import undefined
|
||||||
|
|
||||||
from .upgrade import RougailUpgrade
|
from .upgrade import RougailUpgrade
|
||||||
|
|
@ -91,7 +91,7 @@ class RougailOutputFormatter:
|
||||||
) -> None:
|
) -> None:
|
||||||
self.basic_types = {
|
self.basic_types = {
|
||||||
str: "string",
|
str: "string",
|
||||||
int: "number",
|
int: "integer",
|
||||||
bool: "boolean",
|
bool: "boolean",
|
||||||
float: "float",
|
float: "float",
|
||||||
}
|
}
|
||||||
|
|
@ -281,13 +281,18 @@ class RougailOutputFormatter:
|
||||||
force_keys = list(yaml_data)
|
force_keys = list(yaml_data)
|
||||||
multi = obj.multi or isinstance(obj.default, list)
|
multi = obj.multi or isinstance(obj.default, list)
|
||||||
type_ = obj.type
|
type_ = obj.type
|
||||||
|
if type_ in RENAME_TYPE:
|
||||||
|
type_ = RENAME_TYPE[type_]
|
||||||
for attr, default_value in self.get_attributes(
|
for attr, default_value in self.get_attributes(
|
||||||
self.rougail.variable, ["name", "path", "namespace", "version", "xmlfiles"]
|
self.rougail.variable, ["name", "path", "namespace", "version", "xmlfiles"]
|
||||||
).items():
|
).items():
|
||||||
try:
|
if attr == "type":
|
||||||
value = getattr(obj, attr)
|
value = type_
|
||||||
except AttributeError:
|
else:
|
||||||
continue
|
try:
|
||||||
|
value = getattr(obj, attr)
|
||||||
|
except AttributeError:
|
||||||
|
continue
|
||||||
if attr not in force_keys and value == default_value:
|
if attr not in force_keys and value == default_value:
|
||||||
continue
|
continue
|
||||||
value = self.object_to_yaml(attr, type_, value, multi, path)
|
value = self.object_to_yaml(attr, type_, value, multi, path)
|
||||||
|
|
@ -300,7 +305,7 @@ class RougailOutputFormatter:
|
||||||
if "type" in variable and variable["type"] in [
|
if "type" in variable and variable["type"] in [
|
||||||
"string",
|
"string",
|
||||||
"boolean",
|
"boolean",
|
||||||
"number",
|
"integer",
|
||||||
"float",
|
"float",
|
||||||
]:
|
]:
|
||||||
if variable["default"] and isinstance(variable["default"], list):
|
if variable["default"] and isinstance(variable["default"], list):
|
||||||
|
|
@ -405,6 +410,10 @@ class RougailOutputFormatter:
|
||||||
for v in value:
|
for v in value:
|
||||||
new_value = self.object_to_yaml(key, type_, v, multi, object_path)
|
new_value = self.object_to_yaml(key, type_, v, multi, object_path)
|
||||||
if key == "params":
|
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)
|
new_values.update(new_value)
|
||||||
else:
|
else:
|
||||||
new_values.append(new_value)
|
new_values.append(new_value)
|
||||||
|
|
@ -428,7 +437,10 @@ class RougailOutputFormatter:
|
||||||
else:
|
else:
|
||||||
jinja["jinja"] = LiteralScalarString(jinja_values)
|
jinja["jinja"] = LiteralScalarString(jinja_values)
|
||||||
if value.return_type:
|
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 value.description:
|
||||||
if "\n" in value.description:
|
if "\n" in value.description:
|
||||||
jinja["description"] = LiteralScalarString(value.description.strip())
|
jinja["description"] = LiteralScalarString(value.description.strip())
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class RougailUpgrade:
|
||||||
new_root[key] = value
|
new_root[key] = value
|
||||||
for typ, obj in {
|
for typ, obj in {
|
||||||
"boolean": bool,
|
"boolean": bool,
|
||||||
"number": int,
|
"integer": int,
|
||||||
"string": str,
|
"string": str,
|
||||||
"float": float,
|
"float": float,
|
||||||
}.items():
|
}.items():
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ var:
|
||||||
{% for n in trange(0, 10) %}
|
{% for n in trange(0, 10) %}
|
||||||
{{ n }}
|
{{ n }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
return_type: number
|
return_type: integer
|
||||||
description: choices is 0 to 9
|
description: choices is 0 to 9
|
||||||
default: 9
|
default: 9
|
||||||
...
|
...
|
||||||
|
|
|
||||||
16
tests/results/00_6integer/rougail/00-base.yml
Normal file
16
tests/results/00_6integer/rougail/00-base.yml
Normal file
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -9,7 +9,7 @@ var:
|
||||||
{% for item in trange(0, 10) %}
|
{% for item in trange(0, 10) %}
|
||||||
{{ item }}
|
{{ item }}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
return_type: number
|
return_type: integer
|
||||||
description: choice for 0 to 9
|
description: choice for 0 to 9
|
||||||
default: 9
|
default: 9
|
||||||
...
|
...
|
||||||
|
|
|
||||||
15
tests/results/00_9default_number/rougail/00-base.yml
Normal file
15
tests/results/00_9default_number/rougail/00-base.yml
Normal file
|
|
@ -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
|
||||||
|
...
|
||||||
|
|
@ -5,7 +5,7 @@ version: 1.1
|
||||||
int:
|
int:
|
||||||
description: A limited number
|
description: A limited number
|
||||||
params:
|
params:
|
||||||
min_number: 0
|
min_integer: 0
|
||||||
max_number: 100
|
max_integer: 100
|
||||||
default: 10
|
default: 10
|
||||||
...
|
...
|
||||||
|
|
|
||||||
11
tests/results/04_0type_param_integer/rougail/00-base.yml
Normal file
11
tests/results/04_0type_param_integer/rougail/00-base.yml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
version: 1.1
|
||||||
|
|
||||||
|
int:
|
||||||
|
description: A limited integer
|
||||||
|
params:
|
||||||
|
min_integer: 0
|
||||||
|
max_integer: 100
|
||||||
|
default: 10
|
||||||
|
...
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
version: 1.1
|
version: 1.1
|
||||||
|
|
||||||
int:
|
int:
|
||||||
description: A number
|
description: An integer
|
||||||
type: number
|
type: integer
|
||||||
validators:
|
validators:
|
||||||
- jinja: |-
|
- jinja: |-
|
||||||
{% if _.int > 100 %}
|
{% if _.int > 100 %}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ version: 1.1
|
||||||
general: # a family
|
general: # a family
|
||||||
|
|
||||||
int:
|
int:
|
||||||
description: a first number
|
description: a first integer
|
||||||
test:
|
test:
|
||||||
- 5
|
- 5
|
||||||
type: number
|
type: integer
|
||||||
validators:
|
validators:
|
||||||
- jinja: |-
|
- jinja: |-
|
||||||
{% if _.int == int2 %}
|
{% if _.int == int2 %}
|
||||||
|
|
@ -29,5 +29,5 @@ general: # a family
|
||||||
variable: _.int3
|
variable: _.int3
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
int2: 1 # a second number
|
int2: 1 # a second integer
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ leader:
|
||||||
|
|
||||||
follower1:
|
follower1:
|
||||||
description: a follower
|
description: a follower
|
||||||
type: number
|
type: integer
|
||||||
default:
|
default:
|
||||||
type: index
|
type: index
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ leader:
|
||||||
|
|
||||||
follower1:
|
follower1:
|
||||||
description: a follower
|
description: a follower
|
||||||
type: number
|
type: integer
|
||||||
default:
|
default:
|
||||||
jinja: >-
|
jinja: >-
|
||||||
{{ index }}
|
{{ index }}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ bool: false # a boolean variable
|
||||||
|
|
||||||
int1:
|
int1:
|
||||||
description: first integer variable
|
description: first integer variable
|
||||||
type: number
|
type: integer
|
||||||
default:
|
default:
|
||||||
jinja: >-
|
jinja: >-
|
||||||
{% if rougail.bool %}
|
{% if rougail.bool %}
|
||||||
|
|
@ -18,7 +18,7 @@ int1:
|
||||||
|
|
||||||
int2:
|
int2:
|
||||||
description: second integer variable
|
description: second integer variable
|
||||||
type: number
|
type: integer
|
||||||
default:
|
default:
|
||||||
jinja: >-
|
jinja: >-
|
||||||
{% if not rougail.bool %}
|
{% if not rougail.bool %}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ var:
|
||||||
test:
|
test:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
type: number
|
type: integer
|
||||||
multi: true
|
multi: true
|
||||||
mandatory: false
|
mandatory: false
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ excludes = [
|
||||||
]
|
]
|
||||||
|
|
||||||
test_ok = get_structures_list(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):
|
def idfn(fixture_value):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue