diff --git a/src/rougail/output_formatter/__init__.py b/src/rougail/output_formatter/__init__.py
new file mode 100644
index 0000000..e134a95
--- /dev/null
+++ b/src/rougail/output_formatter/__init__.py
@@ -0,0 +1,388 @@
+"""
+Silique (https://www.silique.fr)
+Copyright (C) 2024
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see .
+"""
+
+
+from io import BytesIO
+from pathlib import Path
+from typing import Optional
+
+from ruamel.yaml import YAML, CommentedMap
+from ruamel.yaml.tokens import CommentToken
+from ruamel.yaml.error import CommentMark
+from ruamel.yaml.comments import CommentedSeq
+from ruamel.yaml.scalarstring import LiteralScalarString, FoldedScalarString
+
+from tiramisu import undefined
+from tiramisu.config import get_common_path
+
+from rougail.convert import RougailConvert
+from rougail.object_model import Variable, Family, Calculation, JinjaCalculation, IdentifierCalculation, IdentifierPropertyCalculation, IdentifierParam, IndexCalculation, IndexParam, Param
+from rougail.utils import normalize_family
+
+from .upgrade import RougailUpgrade
+
+
+def _(text):
+ return text
+
+
+class RougailOutputFormatter:
+ output_name = 'formatter'
+
+ def __init__(
+ self,
+ config: "Config",
+ *,
+ rougailconfig: "RougailConfig" = None,
+ user_data_errors: Optional[list] = None,
+ user_data_warnings: Optional[list] = None,
+ ) -> None:
+ self.basic_types = {
+ str: "string",
+ int: "number",
+ bool: "boolean",
+ float: "float",
+ }
+ if rougailconfig is None:
+ from rougail import RougailConfig
+ rougailconfig = RougailConfig
+ rougailconfig["step.output"] = self.output_name
+ if rougailconfig["step.output"] != self.output_name:
+ raise ExtentionError(_('the "step.output" is not set to "{0}"').format(self.output_name))
+ # yaml.top_level_colon_align = True
+ self.main_namespace = rougailconfig["main_namespace"]
+ filenames = rougailconfig["main_dictionaries"]
+ if len(rougailconfig["main_dictionaries"]) > 1:
+ raise Exception(_('only one file is allowed'))
+ filename = Path(filenames[0])
+ if not filename.is_file():
+ raise Exception(_('only a file is allowed'))
+ self.original_yaml = RougailUpgrade(rougailconfig).run(filename)
+ datas = RougailUpgrade(rougailconfig).run(filename)
+ self.rougail = RougailConvert(rougailconfig)
+ self.rougail.load_config()
+ self.rougail.init()
+ self.filename_str = str(filename)
+ if self.main_namespace is None:
+ self.rougail.namespace = None
+ else:
+ self.rougail.namespace = normalize_family(self.main_namespace)
+ self.rougail.create_namespace(self.main_namespace)
+ self.rougail.validate_file_version(
+ datas,
+ self.filename_str,
+ )
+ self.rougail.parse_root_file(
+ self.filename_str,
+ self.rougail.namespace,
+ "1.1",
+ datas,
+ )
+ self.yaml = YAML()
+
+ def run(self):
+ self.families_attributes = {attr: obj.get("default") for attr, obj in self.rougail.family.model_json_schema()["properties"].items()}
+ self.dynamics_attributes = {attr: obj.get("default") for attr, obj in self.rougail.dynamic.model_json_schema()["properties"].items()}
+ self.variables_attributes = {attr: obj.get("default") for attr, obj in self.rougail.variable.model_json_schema()["properties"].items()}
+ self.families = {None: CommentedMap()}
+ self.parse()
+ self.yaml.indent(mapping=2, sequence=4, offset=2)
+ self.yaml.explicit_start=True
+ self.default_flow_style = False
+ with BytesIO() as ymlfh:
+ self.yaml.dump(self.families[None], ymlfh)
+ ret = ymlfh.getvalue().decode("utf-8").strip() + '\n'
+ return ret
+
+ def print(self):
+ print(self.run())
+
+ def parse(self):
+ # FIXME path to relative !
+ if self.rougail.namespace:
+ version_path = f'{self.rougail.namespace}.version'
+ else:
+ version_path = 'version'
+ if version_path in self.rougail.paths._data:
+ version_name = '_version'
+ else:
+ version_name = 'version'
+ self.families[None][version_name] = None
+ self.families[None].yaml_value_comment_extend(version_name, [CommentToken('\n\n', CommentMark(0)), None])
+ version = None
+ for path, obj in self.rougail.paths._data.items():
+ if version is None or version == '':
+ version = obj.version
+ if path == self.rougail.namespace:
+ self.families[path] = self.families[None]
+ continue
+ if isinstance(obj, Family):
+ self.parse_family(path, obj)
+ if isinstance(obj, Variable):
+ self.parse_variable(path, obj)
+ if not version:
+ raise Exception(_(f'no variables in file {self.filename_str}'))
+ self.families[None][version_name] = float(version)
+
+ def parse_family(self, path, obj):
+ children = [p.rsplit('.', 1)[-1] for p in self.rougail.parents[path]]
+ parent, name = self.get_parent_name(path)
+ ret = self.families[parent]
+ family = CommentedMap()
+ yaml_data = self.parse_yaml(path)
+ force_keys = []
+ if isinstance(yaml_data, dict):
+ if yaml_data.get("redefine", False):
+ family["redefine"] = True
+ force_keys = list(yaml_data)
+ if yaml_data.get("exists") is not None:
+ family["exists"] = yaml_data["exists"]
+ force_keys = list(yaml_data)
+ type_ = obj.type
+ if type_ == "dynamic":
+ attributes = self.dynamics_attributes
+ else:
+ attributes = self.families_attributes
+ for attr, default_value in attributes.items():
+ if attr in ["name", "path", "namespace", "version", "path_prefix", "xmlfiles"]:
+ continue
+ try:
+ value = getattr(obj, attr)
+ except AttributeError:
+ continue
+ if attr != "type" and attr not in force_keys and value == default_value:
+ continue
+ if attr in children:
+ attr = f'_{attr}'
+ value = self.object_to_yaml(attr, type_, value, False, path)
+ family[attr] = value
+ if type_ == "dynamic" or (children and type_ == 'family'):
+ if "_type" in family:
+ del family["_type"]
+ else:
+ del family["type"]
+ if not set(family):
+ ret[name] = CommentedMap()
+ ret.yaml_value_comment_extend(name, [CommentToken('\n\n', CommentMark(0)), None])
+ elif not set(family) - {'description'}:
+ #
+ ret[name] = CommentedMap()
+ ret.yaml_add_eol_comment(family["description"] + '\n\n', name)
+ else:
+ self.add_space(family)
+ ret[name] = family
+ self.families[path] = ret[name]
+
+ def parse_variable(self, path, obj):
+ parent, name = self.get_parent_name(path)
+ ret = self.families[parent]
+ variable = CommentedMap()
+ yaml_data = self.parse_yaml(path)
+ force_keys = []
+ if isinstance(yaml_data, dict):
+ if yaml_data.get("redefine", False):
+ variable["redefine"] = True
+ force_keys = list(yaml_data)
+ if yaml_data.get("exists") is not None:
+ variable["exists"] = yaml_data["exists"]
+ force_keys = list(yaml_data)
+ multi = obj.multi or isinstance(obj.default, list)
+ type_ = obj.type
+ for attr, default_value in self.variables_attributes.items():
+ if attr in ["name", "path", "namespace", "version", "path_prefix", "xmlfiles"]:
+ continue
+ 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)
+ variable[attr] = value
+ if variable.get("mandatory") is True and None not in variable.get("choices", []):
+ del variable["mandatory"]
+ if "default" in variable:
+ if "type" in variable and variable["type"] in ["string", "boolean", "number", "float"]:
+ if variable["default"] and isinstance(variable["default"], list):
+ tested_value = variable["default"][0]
+ else:
+ tested_value = variable["default"]
+ if variable["type"] == self.basic_types.get(type(tested_value), None):
+ del variable["type"]
+ if "multi" in variable and variable["multi"] is True and isinstance(variable["default"], list):
+ del variable["multi"]
+ elif variable.get("type") == "choice" and "choices" in variable:
+ del variable["type"]
+ elif variable.get("type") == "string":
+ # default type is string
+ del variable["type"]
+ if set(variable) in [{"multi"}, {'multi', 'description'}]:
+ variable["default"] = []
+ variable.pop("multi")
+ elif variable.get("type") == "boolean" and not multi:
+ # if boolean, the default value is True
+ del variable["type"]
+ variable["default"] = True
+ if not isinstance(variable.get("default"), dict) and not set(variable) - {'default', 'description'}:
+ # shorthand notation
+ default = variable.get('default')
+ ret[name] = default
+ if isinstance(default, list):
+ ret[name] = CommentedSeq()
+ for d in default:
+ ret[name].append(d)
+ else:
+ ret[name] = default
+ if "description" in variable:
+ description = variable["description"]
+ if not multi or not default:
+ description += "\n\n"
+ ret.yaml_add_eol_comment(description, name)
+ if multi and default:
+ self.add_space(ret)
+ else:
+ self.add_space(ret)
+ else:
+ ret[name] = variable
+ self.add_space(variable)
+
+ def add_space(self, obj):
+ def _get_last_obj(o, parent, param, typ):
+ if isinstance(o, CommentedMap):
+ param = list(o)[-1]
+ return _get_last_obj(o[param], o, param, 'map')
+ if isinstance(o, CommentedSeq):
+ param = len(o) - 1
+ return _get_last_obj(o[param], o, param, 'seq')
+ return typ, parent, param
+ param = list(obj)[-1]
+ typ, parent, param = _get_last_obj(obj[param], obj, param, 'map')
+ if typ == 'seq':
+ func = parent.yaml_key_comment_extend
+ else:
+ func = parent.yaml_value_comment_extend
+ func(param, [CommentToken('\n\n', CommentMark(0)), None])
+
+ def object_to_yaml(self, key, type_, value, multi, object_path):
+ if isinstance(value, list):
+ if key == 'params':
+ new_values = CommentedMap()
+ else:
+ new_values = CommentedSeq()
+ for v in value:
+ new_value = self.object_to_yaml(key, type_, v, multi, object_path)
+ if key == 'params':
+ new_values.update(new_value)
+ else:
+ new_values.append(new_value)
+ return new_values
+ if isinstance(value, JinjaCalculation):
+ jinja = CommentedMap()
+ # replace \n to space a add index of \n (now a space) to fold_pos
+ jinja_values = value.jinja.strip()
+ if key == 'default' and not multi:
+ jinja["jinja"] = FoldedScalarString(jinja_values.replace('\n', ' '))
+ jinja["jinja"].fold_pos = [i for i, ltr in enumerate(jinja_values) if ltr == '\n']
+ else:
+ jinja["jinja"] = LiteralScalarString(jinja_values)
+ if value.return_type:
+ jinja["return_type"] = value.return_type
+ if value.description:
+ jinja["description"] = value.description
+ if value.params:
+ jinja["params"] = self.object_to_yaml("params", type_, value.params, multi, object_path)
+ return jinja
+ elif isinstance(value, Calculation):
+ variable_attributes = self.get_object_informations(value, ['path', 'inside_list', 'version', 'xmlfiles', 'attribute_name', 'namespace'])
+ variable = CommentedMap()
+ if isinstance(value, (IdentifierCalculation, IdentifierPropertyCalculation)):
+ variable["type"] = "identifier"
+ if isinstance(value, IndexCalculation):
+ variable["type"] = "index"
+ for key, default in variable_attributes.items():
+ val = getattr(value, key)
+ if val != default and val is not undefined:
+ variable[key] = val
+ if "variable" in variable:
+ variable["variable"] = self.calc_variable_path(object_path, variable["variable"])
+ if variable.get('type') == 'identifier' and 'identifier' in variable:
+ del variable["type"]
+ return variable
+ elif isinstance(value, Param):
+ param_attributes = self.get_object_informations(value, ["type", "key"])
+ if list(param_attributes) == ['value']:
+ variable = value.value
+ else:
+ variable = CommentedMap()
+ if isinstance(value, IdentifierParam):
+ variable["type"] = "identifier"
+ if isinstance(value, IndexParam):
+ variable["type"] = "index"
+ for key, default in param_attributes.items():
+ val = getattr(value, key)
+ if val != default and val is not undefined:
+ variable[key] = val
+ if variable.get('type') == 'identifier' and 'identifier' in variable:
+ del variable["type"]
+ if "variable" in variable:
+ variable["variable"] = self.calc_variable_path(object_path, variable["variable"])
+ return {value.key: variable}
+ elif type_ == 'port' and isinstance(value, str) and value.isnumeric():
+ return int(value)
+ return value
+
+ def calc_variable_path(self, object_path, variable_path):
+ if not variable_path.startswith("_"):
+ common_path = get_common_path(object_path, variable_path)
+ if not self.rougail.namespace or common_path:
+ if not common_path:
+ len_common_path = 0
+ else:
+ len_common_path = len(common_path) + 1
+ relative_object_path = object_path[len_common_path:]
+ final_path = "_" * (relative_object_path.count(".") + 1) + '.'
+ return "_" * (relative_object_path.count(".") + 1) + '.' + variable_path[len_common_path:]
+ return variable_path
+
+ def get_object_informations(self, value, excludes=[]):
+ return {attr: obj.get("default") for attr, obj in value.__class__.model_json_schema()["properties"].items() if attr not in excludes}
+
+ def get_parent_name(self, path):
+ if "." in path:
+ return path.rsplit(".", 1)
+ return None, path
+
+ def parse_yaml(self, path: str) -> dict:
+ def _yaml(y):
+ if not subpath:
+ return y
+ name = subpath.pop(0)
+ if name not in y and name.endswith('{{ identifier }}'):
+ name = name[:-16]
+ return _yaml(y[name])
+ if self.main_namespace:
+ subpath = path.split('.')[1:]
+ else:
+ subpath = path.split('.')
+ return _yaml(self.original_yaml)
+
+
+RougailOutput = RougailOutputFormatter
+
+
+__all__ = ("RougailOutputFormatter",)
diff --git a/src/rougail/output_formatter/config.py b/src/rougail/output_formatter/config.py
new file mode 100644
index 0000000..0178880
--- /dev/null
+++ b/src/rougail/output_formatter/config.py
@@ -0,0 +1,51 @@
+"""
+Silique (https://www.silique.fr)
+Copyright (C) 2024
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see .
+"""
+
+from pathlib import Path
+
+
+def get_rougail_config(
+ *,
+ backward_compatibility=True,
+) -> dict:
+ options = """
+load_unexist_redefine:
+ redefine: true
+ type: boolean
+ default:
+ jinja: >-
+ {% if step.output == 'formatter' %}
+ true
+ {% else %}
+ false
+ {% endif %}
+ hidden:
+ jinja: >-
+ {% if step.output == 'formatter' %}
+ load_unexist_redefine is always true with 'formatter' output
+ {% endif %}
+"""
+ return {
+ "name": "formatter",
+ "process": "output",
+ "options": options,
+ "level": 90,
+ }
+
+
+__all__ = ("get_rougail_config",)
diff --git a/src/rougail/output_formatter/upgrade.py b/src/rougail/output_formatter/upgrade.py
new file mode 100644
index 0000000..530ee6e
--- /dev/null
+++ b/src/rougail/output_formatter/upgrade.py
@@ -0,0 +1,111 @@
+"""Update Rougail structure file to new version
+
+Cadoles (http://www.cadoles.com)
+Copyright (C) 2021
+
+Silique (https://www.silique.fr)
+Copyright (C) 2022-2024
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see .
+"""
+
+from ruamel.yaml import YAML, CommentedMap
+
+from rougail import RougailConfig
+
+
+VERSIONS = ["1.0", "1.1"]
+
+
+def get_function_name(version):
+ version = version.replace(".", "_")
+ return f"update_{version}"
+
+
+FUNCTION_VERSIONS = [(version, get_function_name(version)) for version in VERSIONS]
+
+
+class RougailUpgrade:
+ def __init__(
+ self,
+ rougailconfig: RougailConfig = None,
+ ) -> None:
+ self.rougailconfig = rougailconfig
+
+ def run(
+ self,
+ file,
+ ):
+ with file.open() as file_fh:
+ root = YAML().load(file_fh)
+ search_function_name = get_function_name(str(root["version"]))
+ function_found = False
+ for version, function_version in FUNCTION_VERSIONS:
+ if function_found and hasattr(self, function_version):
+ root = getattr(self, function_version)(root)
+ if function_version == search_function_name:
+ function_found = True
+ if '_version' in root:
+ root["_version"] = float(version)
+ elif 'version' in root:
+ root["version"] = float(version)
+ return root
+
+ def update_1_1(
+ self,
+ root,
+ ):
+ new_root = CommentedMap()
+ for key, value in root.items():
+ if not isinstance(value, dict):
+ if key == 'variable' and "{{ suffix }}" in value:
+ value = value.replace("{{ suffix }}", "{{ identifier }}")
+ new_root[key] = value
+ continue
+ # migrate dynamic family
+ if (
+ ("variable" in value and isinstance(value["variable"], str))
+ or ("_variable" in value and isinstance(value["_variable"], str))
+ ) and (
+ ("_type" in value and value["_type"] == "dynamic")
+ or ("type" in value and value["type"] == "dynamic")
+ ):
+ value["dynamic"] = {
+ "type": "variable",
+ "variable": value.pop("variable"),
+ "propertyerror": False,
+ }
+ if "{{ suffix }}" in key:
+ key = key.replace("{{ suffix }}", "{{ identifier }}")
+ elif "{{ identifier }}" not in key:
+ key = key + "{{ identifier }}"
+ value = self.update_1_1(value)
+ new_root[key] = value
+ for typ, obj in {
+ "boolean": bool,
+ "number": int,
+ "string": str,
+ "float": float,
+ }.items():
+ if value.get("type") == typ:
+ default = value.get("default")
+ if default is None or default == []:
+ continue
+ if isinstance(default, obj):
+ del value["type"]
+ elif isinstance(default, list) and isinstance(default[0], obj):
+ del value["type"]
+ if value.get("multi") and isinstance(value.get("default"), list):
+ del value["multi"]
+ return new_root
diff --git a/tests/results/00_0version_underscore/rougail/00-base.yml b/tests/results/00_0version_underscore/rougail/00-base.yml
new file mode 100644
index 0000000..f7d5594
--- /dev/null
+++ b/tests/results/00_0version_underscore/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+_version: 1.1
+
+version: # a variable
diff --git a/tests/results/00_1empty_variable/rougail/00-base.yml b/tests/results/00_1empty_variable/rougail/00-base.yml
new file mode 100644
index 0000000..7c4a5cf
--- /dev/null
+++ b/tests/results/00_1empty_variable/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+empty:
diff --git a/tests/results/00_2default_calculated/rougail/00-base.yml b/tests/results/00_2default_calculated/rougail/00-base.yml
new file mode 100644
index 0000000..629cc39
--- /dev/null
+++ b/tests/results/00_2default_calculated/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+var1: no # a first variable
+
+var2:
+ description: a second variable
+ multi: true
+ default:
+ jinja: |-
+ {{ _.var1 }}
+ description: the value of var1
diff --git a/tests/results/00_2default_calculated_multi/rougail/00-base.yml b/tests/results/00_2default_calculated_multi/rougail/00-base.yml
new file mode 100644
index 0000000..c490f04
--- /dev/null
+++ b/tests/results/00_2default_calculated_multi/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+var1: # a first variable
+ - no
+ - yes
+ - maybe
+
+var2:
+ description: a second variable
+ multi: true
+ default:
+ jinja: |-
+ {% for val in _.var1 %}
+ {{ val }}
+ {% endfor %}
+ description: the value of _.var1
diff --git a/tests/results/00_2default_calculated_variable_transitive/rougail/00-base.yml b/tests/results/00_2default_calculated_variable_transitive/rougail/00-base.yml
new file mode 100644
index 0000000..65234a1
--- /dev/null
+++ b/tests/results/00_2default_calculated_variable_transitive/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1:
+ description: a first variable
+ type: domainname
+ params:
+ allow_ip: true
+ multi: true
+
+var2:
+ description: a second variable
+ default:
+ variable: _.var1
diff --git a/tests/results/00_4load_subfolder/rougail/99-base.yml b/tests/results/00_4load_subfolder/rougail/99-base.yml
new file mode 100644
index 0000000..c74b712
--- /dev/null
+++ b/tests/results/00_4load_subfolder/rougail/99-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+var1: # a variable
diff --git a/tests/results/00_4load_subfolder/rougail2/00-base.yml b/tests/results/00_4load_subfolder/rougail2/00-base.yml
new file mode 100644
index 0000000..4a603f3
--- /dev/null
+++ b/tests/results/00_4load_subfolder/rougail2/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+var2: # a variable
diff --git a/tests/results/00_5load_notype/rougail/00-base.yml b/tests/results/00_5load_notype/rougail/00-base.yml
new file mode 100644
index 0000000..59f0f43
--- /dev/null
+++ b/tests/results/00_5load_notype/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+without_type: non # a variable
diff --git a/tests/results/00_6boolean/rougail/00-base.yml b/tests/results/00_6boolean/rougail/00-base.yml
new file mode 100644
index 0000000..8ebc395
--- /dev/null
+++ b/tests/results/00_6boolean/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1: true # the first variable
+
+var2: true # the second variable
+
+var3: true # the third variable
+
+var4: false # the forth variable
+
+var5: false # the fifth variable
+
+var6: false # the sixth variable
diff --git a/tests/results/00_6boolean_no_mandatory/rougail/00-base.yml b/tests/results/00_6boolean_no_mandatory/rougail/00-base.yml
new file mode 100644
index 0000000..7c798f0
--- /dev/null
+++ b/tests/results/00_6boolean_no_mandatory/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ mandatory: false
+ default: true
diff --git a/tests/results/00_6choice/rougail/00-base.yml b/tests/results/00_6choice/rougail/00-base.yml
new file mode 100644
index 0000000..ae8e18b
--- /dev/null
+++ b/tests/results/00_6choice/rougail/00-base.yml
@@ -0,0 +1,48 @@
+---
+version: 1.1
+
+var1:
+ description: the first variable
+ choices:
+ - a
+ - b
+ - c
+
+var2:
+ description: the second variable
+ choices:
+ - a
+ - b
+ - c
+
+var3:
+ description: the third variable
+ choices:
+ - a
+ - b
+ - c
+ mandatory: false
+
+var4:
+ description: the forth variable
+ choices:
+ -
+ - b
+ - c
+ mandatory: false
+
+var5:
+ description: the fifth variable
+ choices:
+ - a
+ - b
+ - c
+ default: a
+
+var6:
+ description: the sixth variable
+ choices:
+ - 1
+ - 2
+ - 3
+ default: 1
diff --git a/tests/results/00_6choice_calculation/rougail/00-base.yml b/tests/results/00_6choice_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..758070f
--- /dev/null
+++ b/tests/results/00_6choice_calculation/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var:
+ description: a variable
+ choices:
+ jinja: |-
+ {% for n in trange(0, 10) %}
+ {{ n }}
+ {% endfor %}
+ return_type: number
+ description: choices is 0 to 9
+ default: 9
diff --git a/tests/results/00_6choice_variable/rougail/00-base.yml b/tests/results/00_6choice_variable/rougail/00-base.yml
new file mode 100644
index 0000000..ae7ac15
--- /dev/null
+++ b/tests/results/00_6choice_variable/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var1: # a second variable
+ - a
+ - b
+ - c
+
+var2:
+ description: a first variable
+ choices:
+ variable: _.var1
+ default: a
diff --git a/tests/results/00_6custom/rougail/00-base.yml b/tests/results/00_6custom/rougail/00-base.yml
new file mode 100644
index 0000000..768a414
--- /dev/null
+++ b/tests/results/00_6custom/rougail/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+custom1:
+ description: the first variable
+ type: custom
+
+custom2:
+ description: the seconf variable
+ type: custom
+ default: value
diff --git a/tests/results/00_6domainname/rougail/00-base.yml b/tests/results/00_6domainname/rougail/00-base.yml
new file mode 100644
index 0000000..5b7c674
--- /dev/null
+++ b/tests/results/00_6domainname/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ description: a domain name variable
+ type: domainname
+ default: my.domain.name
diff --git a/tests/results/00_6domainname_params/rougail/00-base.yml b/tests/results/00_6domainname_params/rougail/00-base.yml
new file mode 100644
index 0000000..265ebf6
--- /dev/null
+++ b/tests/results/00_6domainname_params/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+variable:
+ description: a domain name variable
+ type: domainname
+ params:
+ allow_ip: true
+ default: my.domain.name
diff --git a/tests/results/00_6float/rougail/00-base.yml b/tests/results/00_6float/rougail/00-base.yml
new file mode 100644
index 0000000..cf8562e
--- /dev/null
+++ b/tests/results/00_6float/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1: 0.0 # the first variable
+
+var2: 0.0 # the second variable
+
+var3: 0.0 # the third variable
+
+var4: 10.1 # the forth variable
+
+var5: 10.1 # the fifth variable
+
+var6: 10.1 # the sixth variable
diff --git a/tests/results/00_6number/rougail/00-base.yml b/tests/results/00_6number/rougail/00-base.yml
new file mode 100644
index 0000000..f6d3bfa
--- /dev/null
+++ b/tests/results/00_6number/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+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_6port/rougail/00-base.yml b/tests/results/00_6port/rougail/00-base.yml
new file mode 100644
index 0000000..a0d7ad7
--- /dev/null
+++ b/tests/results/00_6port/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+variable1:
+ description: a port variable
+ type: port
+
+variable2:
+ description: a port variable with default value
+ type: port
+ default: 8080
+
+variable3:
+ description: a port variable with integer default value
+ type: port
+ default: 8080
diff --git a/tests/results/00_6regexp/rougail/00-base.yml b/tests/results/00_6regexp/rougail/00-base.yml
new file mode 100644
index 0000000..97175a0
--- /dev/null
+++ b/tests/results/00_6regexp/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var:
+ description: a first variable
+ test:
+ - '#b1b1b1'
+ - '#b2b2b2'
+ regexp: ^#(?:[0-9a-f]{3}){1,2}$
+ default: '#a1a1a1'
diff --git a/tests/results/00_6string/rougail/00-base.yml b/tests/results/00_6string/rougail/00-base.yml
new file mode 100644
index 0000000..e26e447
--- /dev/null
+++ b/tests/results/00_6string/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1: # the first variable
+
+var2: # the second variable
+
+var3: # the third variable
+
+var4: value # the forth variable
+
+var5: value # the fifth variable
+
+var6: value # the sixth variable
diff --git a/tests/results/00_7choice_quote/rougail/00-base.yml b/tests/results/00_7choice_quote/rougail/00-base.yml
new file mode 100644
index 0000000..651d61c
--- /dev/null
+++ b/tests/results/00_7choice_quote/rougail/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var:
+ description: A choice
+ type: choice
+ choices:
+ - quote'
+ - quote"
+ - quote"'
+ default: quote'
diff --git a/tests/results/00_7help_quote/rougail/00-base.yml b/tests/results/00_7help_quote/rougail/00-base.yml
new file mode 100644
index 0000000..f985145
--- /dev/null
+++ b/tests/results/00_7help_quote/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var1:
+ description: the first variable
+ help: message with '
+
+var2:
+ description: the second variable
+ help: message with "
diff --git a/tests/results/00_7value_doublequote/rougail/00-base.yml b/tests/results/00_7value_doublequote/rougail/00-base.yml
new file mode 100644
index 0000000..97c9740
--- /dev/null
+++ b/tests/results/00_7value_doublequote/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: quote" # a variable
diff --git a/tests/results/00_7value_doublequote2/rougail/00-base.yml b/tests/results/00_7value_doublequote2/rougail/00-base.yml
new file mode 100644
index 0000000..4a3edc4
--- /dev/null
+++ b/tests/results/00_7value_doublequote2/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: quote'" # a variable
diff --git a/tests/results/00_7value_doublequote3/rougail/00-base.yml b/tests/results/00_7value_doublequote3/rougail/00-base.yml
new file mode 100644
index 0000000..1e5cbb9
--- /dev/null
+++ b/tests/results/00_7value_doublequote3/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: quote\"\' # a variable
diff --git a/tests/results/00_7value_quote/rougail/00-base.yml b/tests/results/00_7value_quote/rougail/00-base.yml
new file mode 100644
index 0000000..94acfe0
--- /dev/null
+++ b/tests/results/00_7value_quote/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: quote' # a variable
diff --git a/tests/results/00_8calculation_information/rougail/00-base.yml b/tests/results/00_8calculation_information/rougail/00-base.yml
new file mode 100644
index 0000000..225d67f
--- /dev/null
+++ b/tests/results/00_8calculation_information/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ jinja: >-
+ {{test_information }}
+ description: get information test_information
+ params:
+ test_information:
+ information: test_information
diff --git a/tests/results/00_8test/rougail/00-base.yml b/tests/results/00_8test/rougail/00-base.yml
new file mode 100644
index 0000000..8fae93d
--- /dev/null
+++ b/tests/results/00_8test/rougail/00-base.yml
@@ -0,0 +1,40 @@
+---
+version: 1.1
+
+var1:
+ description: the first variable
+ test:
+ - test
+
+var2:
+ description: the second variable
+ test:
+ - test
+ default: value
+
+var3:
+ description: the third variable
+ test:
+ - test1
+ - test2
+
+var4:
+ description: the forth variable
+ test:
+ -
+ - test1
+ - test2
+ mandatory: false
+
+var5:
+ description: the fifth variable
+ test:
+ - false
+ default: true
+
+var6:
+ description: the sixth variable
+ test:
+ - test1
+ - test2
+ multi: true
diff --git a/tests/results/00_9choice_variable_multi/rougail/00-base.yml b/tests/results/00_9choice_variable_multi/rougail/00-base.yml
new file mode 100644
index 0000000..d2cc9dd
--- /dev/null
+++ b/tests/results/00_9choice_variable_multi/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+variable1:
+ description: a first variable
+ choices:
+ - val1
+ - val2
+ multi: true
+
+variable2:
+ description: a second variable
+ choices:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
diff --git a/tests/results/00_9choice_variables/rougail/00-base.yml b/tests/results/00_9choice_variables/rougail/00-base.yml
new file mode 100644
index 0000000..ac905ac
--- /dev/null
+++ b/tests/results/00_9choice_variables/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+source_variable_1: val1 # the first source variable
+
+source_variable_2: val2 # the second source variable
+
+my_variable:
+ description: a variable
+ type: choice
+ choices:
+ - variable: _.source_variable_1
+ - variable: _.source_variable_2
+ default: val1
diff --git a/tests/results/00_9default_calculation/rougail/00-base.yml b/tests/results/00_9default_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..9766fc0
--- /dev/null
+++ b/tests/results/00_9default_calculation/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ jinja: >-
+ {{ param1 }}_{{ param2 }}_{{ param3 }}_{{ param4 }}
+ description: concat all parameters
+ params:
+ param1: string
+ param2: 1
+ param3: true
+ param4:
diff --git a/tests/results/00_9default_calculation_information/rougail/00-base.yml b/tests/results/00_9default_calculation_information/rougail/00-base.yml
new file mode 100644
index 0000000..2adfcaa
--- /dev/null
+++ b/tests/results/00_9default_calculation_information/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var:
+ description: a variable
+ default:
+ jinja: >-
+ {{ information }}
+ description: returns the information
+ params:
+ information:
+ information: test_information
+ variable: _.var
diff --git a/tests/results/00_9default_calculation_information_other_variable/rougail/00-base.yml b/tests/results/00_9default_calculation_information_other_variable/rougail/00-base.yml
new file mode 100644
index 0000000..e4d3bbc
--- /dev/null
+++ b/tests/results/00_9default_calculation_information_other_variable/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1: # a first variable
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ information }}
+ params:
+ information:
+ information: test_information
+ variable: _.var1
diff --git a/tests/results/00_9default_calculation_multi_optional/rougail/00-base.yml b/tests/results/00_9default_calculation_multi_optional/rougail/00-base.yml
new file mode 100644
index 0000000..b02f898
--- /dev/null
+++ b/tests/results/00_9default_calculation_multi_optional/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+my_variable: val1
+
+my_calculated_variable:
+ - variable: _.my_variable
+ optional: true
+ - variable: _.my_variable_unexists
+ optional: true
diff --git a/tests/results/00_9default_calculation_multi_optional2/rougail/00-base.yml b/tests/results/00_9default_calculation_multi_optional2/rougail/00-base.yml
new file mode 100644
index 0000000..872b5da
--- /dev/null
+++ b/tests/results/00_9default_calculation_multi_optional2/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+my_variable: val1
+
+my_calculated_variable:
+ - variable: _.my_variable_unexists
+ optional: true
+ - variable: _.my_variable
+ optional: true
diff --git a/tests/results/00_9default_calculation_optional/rougail/00-base.yml b/tests/results/00_9default_calculation_optional/rougail/00-base.yml
new file mode 100644
index 0000000..1089f32
--- /dev/null
+++ b/tests/results/00_9default_calculation_optional/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+my_calculated_variable:
+ multi: true
+ default:
+ variable: _.my_variable
+ optional: true
diff --git a/tests/results/00_9default_calculation_optional_exists/rougail/00-base.yml b/tests/results/00_9default_calculation_optional_exists/rougail/00-base.yml
new file mode 100644
index 0000000..d89fb51
--- /dev/null
+++ b/tests/results/00_9default_calculation_optional_exists/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+my_variable:
+ - val1
+ - val2
+
+my_calculated_variable:
+ multi: true
+ default:
+ variable: _.my_variable
+ optional: true
diff --git a/tests/results/00_9default_calculation_param_optional/rougail/00-base.yml b/tests/results/00_9default_calculation_param_optional/rougail/00-base.yml
new file mode 100644
index 0000000..a875c6c
--- /dev/null
+++ b/tests/results/00_9default_calculation_param_optional/rougail/00-base.yml
@@ -0,0 +1,23 @@
+---
+version: 1.1
+
+var1:
+ description: a first variable
+ default:
+ jinja: >-
+ {% if var2 is defined %} {{ var2 }} {% elif var3 is defined %} {{ var3 }} {%
+ elif var4 is defined %} {{ var4 }} {% else %} {{ _.var2 }} {% endif %}
+ description: returns a value
+ params:
+ var2:
+ variable: _.var2
+ optional: true
+ var3:
+ variable: _.var3
+ optional: true
+ var4:
+ variable: _.unknown_family.var
+ optional: true
+ mandatory: false
+
+var2: no # a second variable
diff --git a/tests/results/00_9default_information_other_variable/rougail/00-base.yml b/tests/results/00_9default_information_other_variable/rougail/00-base.yml
new file mode 100644
index 0000000..1b62a57
--- /dev/null
+++ b/tests/results/00_9default_information_other_variable/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var1: # a first variable
+
+var2:
+ description: a second variable
+ default:
+ information: test_information
+ variable: _.var1
diff --git a/tests/results/00_9default_information_other_variable2/rougail/00-base.yml b/tests/results/00_9default_information_other_variable2/rougail/00-base.yml
new file mode 100644
index 0000000..1b62a57
--- /dev/null
+++ b/tests/results/00_9default_information_other_variable2/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var1: # a first variable
+
+var2:
+ description: a second variable
+ default:
+ information: test_information
+ variable: _.var1
diff --git a/tests/results/00_9default_integer/rougail/00-base.yml b/tests/results/00_9default_integer/rougail/00-base.yml
new file mode 100644
index 0000000..f602044
--- /dev/null
+++ b/tests/results/00_9default_integer/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var:
+ description: a variable
+ choices:
+ jinja: |-
+ {% for item in trange(0, 10) %}
+ {{ item }}
+ {%- endfor %}
+ return_type: number
+ description: choice for 0 to 9
+ default: 9
diff --git a/tests/results/00_9extra/extra/00-base.yml b/tests/results/00_9extra/extra/00-base.yml
new file mode 100644
index 0000000..310df13
--- /dev/null
+++ b/tests/results/00_9extra/extra/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ jinja: >-
+ no
+ description: return no
diff --git a/tests/results/00_9extra/rougail/00-base.yml b/tests/results/00_9extra/rougail/00-base.yml
new file mode 100644
index 0000000..ad22b62
--- /dev/null
+++ b/tests/results/00_9extra/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: rougail # a variable
diff --git a/tests/results/00_9extra_calculation/extra/00-base.yml b/tests/results/00_9extra_calculation/extra/00-base.yml
new file mode 100644
index 0000000..9e42b35
--- /dev/null
+++ b/tests/results/00_9extra_calculation/extra/00-base.yml
@@ -0,0 +1,24 @@
+---
+version: 1.1
+
+variable1:
+ description: a first variable
+ default:
+ variable: rougail.variable
+
+variable2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ rougail.variable }}
+ description: copy the value of rougail.variable
+
+variable3:
+ description: a third variable
+ default:
+ jinja: >-
+ {{ variable }}
+ description: copy the value of rougail.variable
+ params:
+ variable:
+ variable: rougail.variable
diff --git a/tests/results/00_9extra_calculation/rougail/00-base.yml b/tests/results/00_9extra_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..8a65454
--- /dev/null
+++ b/tests/results/00_9extra_calculation/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: value # a variable
diff --git a/tests/results/00_9extra_ouside/extra/00-base.yml b/tests/results/00_9extra_ouside/extra/00-base.yml
new file mode 100644
index 0000000..c427895
--- /dev/null
+++ b/tests/results/00_9extra_ouside/extra/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: value in extra # a variable
diff --git a/tests/results/00_9extra_ouside/rougail/00-base.yml b/tests/results/00_9extra_ouside/rougail/00-base.yml
new file mode 100644
index 0000000..01633f2
--- /dev/null
+++ b/tests/results/00_9extra_ouside/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ variable: extra.variable
diff --git a/tests/results/01_6boolean_multi/rougail/00-base.yml b/tests/results/01_6boolean_multi/rougail/00-base.yml
new file mode 100644
index 0000000..029cab4
--- /dev/null
+++ b/tests/results/01_6boolean_multi/rougail/00-base.yml
@@ -0,0 +1,26 @@
+---
+version: 1.1
+
+var1: # the first variable
+ - true
+
+var2: # the second variable
+ - true
+
+var3: # the third variable
+ - true
+
+var4: # the forth variable
+ - false
+
+var5: # the fifth variable
+ - false
+
+var6: # the sixth variable
+ - false
+
+var7: # the seventh variable
+ - true
+
+var8: # the eighth variable
+ - true
diff --git a/tests/results/01_6custom_multi/rougail/00-base.yml b/tests/results/01_6custom_multi/rougail/00-base.yml
new file mode 100644
index 0000000..2aaf882
--- /dev/null
+++ b/tests/results/01_6custom_multi/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+custom1:
+ description: a first custom variable
+ type: custom
+ multi: true
+
+custom2:
+ description: a second custom variable
+ type: custom
+ default:
+ - value
diff --git a/tests/results/01_6float_multi/rougail/00-base.yml b/tests/results/01_6float_multi/rougail/00-base.yml
new file mode 100644
index 0000000..021c239
--- /dev/null
+++ b/tests/results/01_6float_multi/rougail/00-base.yml
@@ -0,0 +1,26 @@
+---
+version: 1.1
+
+var1: # the first variable
+ - 0.0
+
+var2: # the second variable
+ - 0.0
+
+var3: # the third variable
+ - 0.0
+
+var4: # the forth variable
+ - 10.1
+
+var5: # the fifth variable
+ - 10.1
+
+var6: # the sixth variable
+ - 10.1
+
+var7: # the seventh variable
+ - 0.0
+
+var8: # the eighth variable
+ - 0.0
diff --git a/tests/results/01_6number_multi/rougail/00-base.yml b/tests/results/01_6number_multi/rougail/00-base.yml
new file mode 100644
index 0000000..7afe3f0
--- /dev/null
+++ b/tests/results/01_6number_multi/rougail/00-base.yml
@@ -0,0 +1,26 @@
+---
+version: 1.1
+
+var1: # the first variable
+ - 0
+
+var2: # the second variable
+ - 0
+
+var3: # the third variable
+ - 0
+
+var4: # the forth variable
+ - 10
+
+var5: # the fifth variable
+ - 10
+
+var6: # the sixth variable
+ - 10
+
+var7: # the seventh variable
+ - 0
+
+var8: # the eighth variable
+ - 0
diff --git a/tests/results/01_6string_empty/rougail/00-base.yml b/tests/results/01_6string_empty/rougail/00-base.yml
new file mode 100644
index 0000000..4ef9b52
--- /dev/null
+++ b/tests/results/01_6string_empty/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+var1:
+ description: the second variable
+ default:
+ - value
+ -
+ empty: false
diff --git a/tests/results/01_6string_multi/rougail/00-base.yml b/tests/results/01_6string_multi/rougail/00-base.yml
new file mode 100644
index 0000000..fcd5865
--- /dev/null
+++ b/tests/results/01_6string_multi/rougail/00-base.yml
@@ -0,0 +1,23 @@
+---
+version: 1.1
+
+var1: [] # the first variable
+
+var2: [] # the second variable
+
+var3: [] # the third variable
+
+var4: # the forth variable
+ - value
+
+var5: # the fifth variable
+ - value
+
+var6: # the sixth variable
+ - value
+
+var7: # the seventh variable
+ - value
+
+var8: # the eighth variable
+ - value
diff --git a/tests/results/01_7value_multi_doublequote/rougail/00-base.yml b/tests/results/01_7value_multi_doublequote/rougail/00-base.yml
new file mode 100644
index 0000000..9139fc9
--- /dev/null
+++ b/tests/results/01_7value_multi_doublequote/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+variable: # a variable
+ - quote"
diff --git a/tests/results/01_7value_multi_doublequote2/rougail/00-base.yml b/tests/results/01_7value_multi_doublequote2/rougail/00-base.yml
new file mode 100644
index 0000000..eb91b94
--- /dev/null
+++ b/tests/results/01_7value_multi_doublequote2/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+variable: # a variable
+ - quote'"
diff --git a/tests/results/01_7value_multi_quote/rougail/00-base.yml b/tests/results/01_7value_multi_quote/rougail/00-base.yml
new file mode 100644
index 0000000..eef8035
--- /dev/null
+++ b/tests/results/01_7value_multi_quote/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+variable: # a variable
+ - quote'
diff --git a/tests/results/01_8calculation_information_multi/rougail/00-base.yml b/tests/results/01_8calculation_information_multi/rougail/00-base.yml
new file mode 100644
index 0000000..7087547
--- /dev/null
+++ b/tests/results/01_8calculation_information_multi/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ multi: true
+ default:
+ jinja: |-
+ {% for info in test_information %}
+ {{ info }}
+ {% endfor %}
+ description: get information test_information
+ params:
+ test_information:
+ information: test_information_list
diff --git a/tests/results/01_9choice_variable_multi/rougail/00-base.yml b/tests/results/01_9choice_variable_multi/rougail/00-base.yml
new file mode 100644
index 0000000..442e709
--- /dev/null
+++ b/tests/results/01_9choice_variable_multi/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+variable1: # a first variable
+ - a
+ - b
+ - c
+
+variable2:
+ description: a second variable
+ choices:
+ variable: _.variable1
diff --git a/tests/results/04_0type_param/rougail/00-base.yml b/tests/results/04_0type_param/rougail/00-base.yml
new file mode 100644
index 0000000..3bbd4ff
--- /dev/null
+++ b/tests/results/04_0type_param/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+int:
+ description: A limited number
+ params:
+ min_number: 0
+ max_number: 100
+ default: 10
diff --git a/tests/results/04_1auto_save/rougail/00-base.yml b/tests/results/04_1auto_save/rougail/00-base.yml
new file mode 100644
index 0000000..206db87
--- /dev/null
+++ b/tests/results/04_1auto_save/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ description: an auto save variable
+ default: no
+ auto_save: true
diff --git a/tests/results/04_1auto_save_and_calculated/rougail/00-base.yml b/tests/results/04_1auto_save_and_calculated/rougail/00-base.yml
new file mode 100644
index 0000000..80472de
--- /dev/null
+++ b/tests/results/04_1auto_save_and_calculated/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var1: no # a first variable
+
+var2:
+ description: a second variable
+ default:
+ variable: _.var1
+ auto_save: true
diff --git a/tests/results/04_1auto_save_and_calculated_hidden/rougail/00-base.yml b/tests/results/04_1auto_save_and_calculated_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..74d1709
--- /dev/null
+++ b/tests/results/04_1auto_save_and_calculated_hidden/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+var1: no # a first variable
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ yes
+ description: the value is always yes
+ auto_save: true
+ hidden:
+ jinja: |-
+ {% if _.var1 == "yes" %}
+ _.var1 is yes
+ {% endif %}
+ description: only if the variable var1 has value "yes"
diff --git a/tests/results/04_1auto_save_and_hidden/rougail/00-base.yml b/tests/results/04_1auto_save_and_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..d3f709b
--- /dev/null
+++ b/tests/results/04_1auto_save_and_hidden/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+var:
+ description: autosave variable
+ default: yes
+ auto_save: true
+ mandatory: false
+ hidden: true
diff --git a/tests/results/04_1default_calculation_hidden/rougail/00-base.yml b/tests/results/04_1default_calculation_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..483988c
--- /dev/null
+++ b/tests/results/04_1default_calculation_hidden/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+var1: value # a first variable
+
+var2:
+ description: a second variable
+ disabled:
+ variable: _.var1
+ when: value
+
+var3:
+ description: a third variable
+ default:
+ jinja: >-
+ {% if _.var1 == 'value' or _.var2 == 'blah' %}
+ value
+ {% endif %}
diff --git a/tests/results/04_1default_calculation_hidden_2/rougail/00-base.yml b/tests/results/04_1default_calculation_hidden_2/rougail/00-base.yml
new file mode 100644
index 0000000..3dfc658
--- /dev/null
+++ b/tests/results/04_1default_calculation_hidden_2/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+var1: value # a first variable
+
+var2:
+ description: a second variable
+ disabled:
+ variable: _.var1
+ when: value
+
+var3:
+ description: a third variable
+ default:
+ jinja: >-
+ {% if _.var2 is propertyerror %}
+ value
+ {% endif %}
diff --git a/tests/results/04_5disabled_calculation/rougail/00-base.yml b/tests/results/04_5disabled_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..c7ae8b5
--- /dev/null
+++ b/tests/results/04_5disabled_calculation/rougail/00-base.yml
@@ -0,0 +1,22 @@
+---
+version: 1.1
+
+condition: no # a conditional variable
+
+variable1:
+ description: a first variable
+ disabled:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is egal to "yes"
+
+variable2:
+ description: a second variable
+ disabled:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is egal to "yes"
diff --git a/tests/results/04_5disabled_calculation_default/rougail/00-base.yml b/tests/results/04_5disabled_calculation_default/rougail/00-base.yml
new file mode 100644
index 0000000..3d4f451
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_default/rougail/00-base.yml
@@ -0,0 +1,30 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+var1:
+ description: a first variable
+ default:
+ jinja: >-
+ {{ _.condition }}
+ description: the value of condition
+ disabled:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ rougail.condition }}
+ description: the value of condition
+ disabled:
+ jinja: |-
+ {% if rougail.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/04_5disabled_calculation_optional/rougail/00-base.yml b/tests/results/04_5disabled_calculation_optional/rougail/00-base.yml
new file mode 100644
index 0000000..ea606d3
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_optional/rougail/00-base.yml
@@ -0,0 +1,36 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+var1:
+ description: a first variable
+ mandatory: false
+ hidden:
+ jinja: |-
+ {% if unknown is not defined %}
+ unknown is undefined
+ {% elif unknown == "no" %}
+ unknown is no
+ {% endif %}
+ description: calculation from an unknown variable
+ params:
+ unknown:
+ variable: _.unknown
+ optional: true
+
+var2:
+ description: a second variable
+ mandatory: false
+ hidden:
+ jinja: |-
+ {% if condition is not defined %}
+ condition is undefined
+ {% elif condition == "no" %}
+ condition is no
+ {% endif %}
+ description: calculation from an condition variable
+ params:
+ condition:
+ variable: _.condition
+ optional: true
diff --git a/tests/results/04_5disabled_calculation_variable/rougail/00-base.yml b/tests/results/04_5disabled_calculation_variable/rougail/00-base.yml
new file mode 100644
index 0000000..7db17e1
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_variable/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+condition: false # a condition
+
+variable:
+ description: a variable
+ disabled:
+ variable: _.condition
diff --git a/tests/results/04_5disabled_calculation_variable2/rougail/00-base.yml b/tests/results/04_5disabled_calculation_variable2/rougail/00-base.yml
new file mode 100644
index 0000000..9f7e7f4
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_variable2/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+condition: true # a condition
+
+variable:
+ description: a variable
+ disabled:
+ variable: _.condition
diff --git a/tests/results/04_5disabled_calculation_variable3/rougail/00-base.yml b/tests/results/04_5disabled_calculation_variable3/rougail/00-base.yml
new file mode 100644
index 0000000..364ad5d
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_variable3/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+condition: yes # a condition
+
+variable:
+ description: a variable
+ disabled:
+ variable: _.condition
+ when: yes
diff --git a/tests/results/04_5disabled_calculation_variable4/rougail/00-base.yml b/tests/results/04_5disabled_calculation_variable4/rougail/00-base.yml
new file mode 100644
index 0000000..b44b54e
--- /dev/null
+++ b/tests/results/04_5disabled_calculation_variable4/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+condition: yes # a condition
+
+variable:
+ description: a variable
+ disabled:
+ variable: _.condition
+ when_not: yes
diff --git a/tests/results/04_5hidden_calculation/rougail/00-base.yml b/tests/results/04_5hidden_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..c0918d3
--- /dev/null
+++ b/tests/results/04_5hidden_calculation/rougail/00-base.yml
@@ -0,0 +1,24 @@
+---
+version: 1.1
+
+condition: no # the condition
+
+var1:
+ description: a first variable
+ default: no
+ hidden:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+var2:
+ description: a second variable
+ default: no
+ hidden:
+ jinja: |-
+ {% if rougail.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/04_5hidden_calculation2/rougail/00-base.yml b/tests/results/04_5hidden_calculation2/rougail/00-base.yml
new file mode 100644
index 0000000..33ba95b
--- /dev/null
+++ b/tests/results/04_5hidden_calculation2/rougail/00-base.yml
@@ -0,0 +1,30 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+var1:
+ description: a first variable
+ default:
+ jinja: >-
+ {{ _.condition }}
+ description: the value of condition
+ hidden:
+ jinja: |-
+ {% if _.condition != "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ rougail.condition }}
+ description: the value of condition
+ hidden:
+ jinja: |-
+ {% if rougail.condition != "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/04_5hidden_calculation_default_calculation/rougail/00-base.yml b/tests/results/04_5hidden_calculation_default_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..4eefd58
--- /dev/null
+++ b/tests/results/04_5hidden_calculation_default_calculation/rougail/00-base.yml
@@ -0,0 +1,30 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+var1:
+ description: a first variable
+ default:
+ jinja: >-
+ {{ _.condition }}
+ description: returns the condition value
+ hidden:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ rougail.condition }}
+ description: returns the condition value
+ hidden:
+ jinja: |-
+ {% if rougail.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/04_5validators/rougail/00-base.yml b/tests/results/04_5validators/rougail/00-base.yml
new file mode 100644
index 0000000..dd9b34b
--- /dev/null
+++ b/tests/results/04_5validators/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+int:
+ description: A number
+ type: number
+ validators:
+ - jinja: |-
+ {% if _.int > 100 %}
+ value is too high
+ {% endif %}
+ description: the max value is 100
diff --git a/tests/results/04_5validators_differ/rougail/00-base.yml b/tests/results/04_5validators_differ/rougail/00-base.yml
new file mode 100644
index 0000000..0b03ee3
--- /dev/null
+++ b/tests/results/04_5validators_differ/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+var1:
+ description: a first variable
+ test:
+ - another_value
+ validators:
+ - jinja: |-
+ {% if _.var1 == _.var2 %}
+ var1 must be different than var2
+ {% endif %}
+ description: var1 must be different than var2
+ default: oui
+
+var2: no # A second variable
diff --git a/tests/results/04_5validators_multi/rougail/00-base.yml b/tests/results/04_5validators_multi/rougail/00-base.yml
new file mode 100644
index 0000000..6ef2339
--- /dev/null
+++ b/tests/results/04_5validators_multi/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1:
+ description: a second variable
+ validators:
+ - jinja: |-
+ {% if _.var1 | length > 9 %}
+ length must be less than 10
+ {% endif %}
+ description: check length is less than 10
+ default:
+ - no
+ - yes
diff --git a/tests/results/04_5validators_multi2/rougail/00-base.yml b/tests/results/04_5validators_multi2/rougail/00-base.yml
new file mode 100644
index 0000000..8225a78
--- /dev/null
+++ b/tests/results/04_5validators_multi2/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+var1:
+ description: a second variable
+ test:
+ - val1
+ - val2
+ validators:
+ - jinja: |-
+ {% if values | length > 2 %}
+ length must be less than 3
+ {% endif %}
+ description: check length is less than 3
+ params:
+ values:
+ variable: _.var1
+ whole: true
+ default:
+ - no
+ - yes
diff --git a/tests/results/05_0multi_not_uniq/rougail/00-base.yml b/tests/results/05_0multi_not_uniq/rougail/00-base.yml
new file mode 100644
index 0000000..a2f9761
--- /dev/null
+++ b/tests/results/05_0multi_not_uniq/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+var1:
+ description: a variable
+ default:
+ - non
+ unique: false
diff --git a/tests/results/05_0multi_uniq/rougail/00-base.yml b/tests/results/05_0multi_uniq/rougail/00-base.yml
new file mode 100644
index 0000000..5254e3d
--- /dev/null
+++ b/tests/results/05_0multi_uniq/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ - non
+ unique: true
diff --git a/tests/results/12_1auto_save_expert/rougail/00-base.yml b/tests/results/12_1auto_save_expert/rougail/00-base.yml
new file mode 100644
index 0000000..7e72c46
--- /dev/null
+++ b/tests/results/12_1auto_save_expert/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+var:
+ description: a variable
+ mode: advanced
+ default: no
+ auto_save: true
diff --git a/tests/results/16_0redefine_description/rougail/00-base.yml b/tests/results/16_0redefine_description/rougail/00-base.yml
new file mode 100644
index 0000000..77c437c
--- /dev/null
+++ b/tests/results/16_0redefine_description/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+var: # Redefine description
diff --git a/tests/results/16_0redefine_description/rougail/01-redefine.yml b/tests/results/16_0redefine_description/rougail/01-redefine.yml
new file mode 100644
index 0000000..6c05529
--- /dev/null
+++ b/tests/results/16_0redefine_description/rougail/01-redefine.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+var:
+ redefine: true
+ description: Redefined
diff --git a/tests/results/16_2family_redefine_calculation/rougail/00-base.yml b/tests/results/16_2family_redefine_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..6c75df6
--- /dev/null
+++ b/tests/results/16_2family_redefine_calculation/rougail/00-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+
+ var1:
diff --git a/tests/results/16_2family_redefine_calculation/rougail/01-base.yml b/tests/results/16_2family_redefine_calculation/rougail/01-base.yml
new file mode 100644
index 0000000..bf8ab55
--- /dev/null
+++ b/tests/results/16_2family_redefine_calculation/rougail/01-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+family:
+ redefine: true
+ disabled:
+ jinja: |-
+ true
diff --git a/tests/results/16_2family_redefine_disabled/rougail/00-base.yml b/tests/results/16_2family_redefine_disabled/rougail/00-base.yml
new file mode 100644
index 0000000..6c75df6
--- /dev/null
+++ b/tests/results/16_2family_redefine_disabled/rougail/00-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+
+ var1:
diff --git a/tests/results/16_2family_redefine_disabled/rougail/01-base.yml b/tests/results/16_2family_redefine_disabled/rougail/01-base.yml
new file mode 100644
index 0000000..996f45a
--- /dev/null
+++ b/tests/results/16_2family_redefine_disabled/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+ redefine: true
+ disabled: true
diff --git a/tests/results/16_5exists_nonexists/rougail/00-base.yml b/tests/results/16_5exists_nonexists/rougail/00-base.yml
new file mode 100644
index 0000000..96109d3
--- /dev/null
+++ b/tests/results/16_5exists_nonexists/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+var1: no # a variable
diff --git a/tests/results/16_5exists_nonexists/rougail/01-base.yml b/tests/results/16_5exists_nonexists/rougail/01-base.yml
new file mode 100644
index 0000000..fb8890e
--- /dev/null
+++ b/tests/results/16_5exists_nonexists/rougail/01-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+var2:
+ exists: false
+ description: a new variable
+ default: yes
diff --git a/tests/results/16_5exists_redefine/rougail/00-base.yml b/tests/results/16_5exists_redefine/rougail/00-base.yml
new file mode 100644
index 0000000..75bdbc6
--- /dev/null
+++ b/tests/results/16_5exists_redefine/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+var1:
+ description: a first variable
+ default: no
+ mandatory: false
+ hidden: true
diff --git a/tests/results/16_5exists_redefine/rougail/01-base.yml b/tests/results/16_5exists_redefine/rougail/01-base.yml
new file mode 100644
index 0000000..30e1480
--- /dev/null
+++ b/tests/results/16_5exists_redefine/rougail/01-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var1:
+ redefine: true
+ exists: true
+ default: yes
+
+var2:
+ redefine: true
+ exists: true
+ description: a second variable
+ default: yes
diff --git a/tests/results/16_5redefine_calculation/rougail/00-base.yml b/tests/results/16_5redefine_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..47b0111
--- /dev/null
+++ b/tests/results/16_5redefine_calculation/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ jinja: >-
+ no
+ description: returns no
diff --git a/tests/results/16_5redefine_calculation/rougail/01-base.yml b/tests/results/16_5redefine_calculation/rougail/01-base.yml
new file mode 100644
index 0000000..5479cc6
--- /dev/null
+++ b/tests/results/16_5redefine_calculation/rougail/01-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ default:
+ jinja: >-
+ yes
+ description: returns yes
diff --git a/tests/results/16_5redefine_choice/rougail/00-base.yml b/tests/results/16_5redefine_choice/rougail/00-base.yml
new file mode 100644
index 0000000..0596299
--- /dev/null
+++ b/tests/results/16_5redefine_choice/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ choices:
+ - a
+ - b
+ - c
diff --git a/tests/results/16_5redefine_choice/rougail/01-redefine.yml b/tests/results/16_5redefine_choice/rougail/01-redefine.yml
new file mode 100644
index 0000000..aab8b1b
--- /dev/null
+++ b/tests/results/16_5redefine_choice/rougail/01-redefine.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ choices:
+ - a
+ - b
diff --git a/tests/results/16_5redefine_default/rougail/00-base.yml b/tests/results/16_5redefine_default/rougail/00-base.yml
new file mode 100644
index 0000000..07d5d85
--- /dev/null
+++ b/tests/results/16_5redefine_default/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: no # a variable
diff --git a/tests/results/16_5redefine_default/rougail/01-redefine.yml b/tests/results/16_5redefine_default/rougail/01-redefine.yml
new file mode 100644
index 0000000..3ede28d
--- /dev/null
+++ b/tests/results/16_5redefine_default/rougail/01-redefine.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ default: yes
diff --git a/tests/results/16_5redefine_default_calculation/rougail/00-base.yml b/tests/results/16_5redefine_default_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..9719521
--- /dev/null
+++ b/tests/results/16_5redefine_default_calculation/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+variable:
+ description: a variable
+ default:
+ jinja: >-
+ yes
diff --git a/tests/results/16_5redefine_default_calculation/rougail/01-base.yml b/tests/results/16_5redefine_default_calculation/rougail/01-base.yml
new file mode 100644
index 0000000..22ae069
--- /dev/null
+++ b/tests/results/16_5redefine_default_calculation/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ default:
diff --git a/tests/results/16_5redefine_family/rougail/00-base.yml b/tests/results/16_5redefine_family/rougail/00-base.yml
new file mode 100644
index 0000000..170c7f9
--- /dev/null
+++ b/tests/results/16_5redefine_family/rougail/00-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family: # a family
+
+ variable: # a variable
diff --git a/tests/results/16_5redefine_family/rougail/01-base.yml b/tests/results/16_5redefine_family/rougail/01-base.yml
new file mode 100644
index 0000000..4fbfee0
--- /dev/null
+++ b/tests/results/16_5redefine_family/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+ redefine: true
+ description: new description
diff --git a/tests/results/16_5redefine_help/rougail/00-base.yml b/tests/results/16_5redefine_help/rougail/00-base.yml
new file mode 100644
index 0000000..1c09d1b
--- /dev/null
+++ b/tests/results/16_5redefine_help/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+family:
+ description: a family
+ help: redefine help family
+
+ variable:
+ description: redefine help
+ help: redefine help
diff --git a/tests/results/16_5redefine_help/rougail/01-base.yml b/tests/results/16_5redefine_help/rougail/01-base.yml
new file mode 100644
index 0000000..01819af
--- /dev/null
+++ b/tests/results/16_5redefine_help/rougail/01-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+family:
+ redefine: true
+ help: redefine help family ok
+
+ variable:
+ redefine: true
+ help: redefine help ok
diff --git a/tests/results/16_5redefine_hidden/rougail/00-base.yml b/tests/results/16_5redefine_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..07d5d85
--- /dev/null
+++ b/tests/results/16_5redefine_hidden/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: no # a variable
diff --git a/tests/results/16_5redefine_hidden/rougail/01-redefine.yml b/tests/results/16_5redefine_hidden/rougail/01-redefine.yml
new file mode 100644
index 0000000..b174cd3
--- /dev/null
+++ b/tests/results/16_5redefine_hidden/rougail/01-redefine.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ mandatory: false
+ hidden: true
diff --git a/tests/results/16_5redefine_multi/rougail/00-base.yml b/tests/results/16_5redefine_multi/rougail/00-base.yml
new file mode 100644
index 0000000..4d86184
--- /dev/null
+++ b/tests/results/16_5redefine_multi/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+variable: non # a variable
diff --git a/tests/results/16_5redefine_multi/rougail/01-redefine.yml b/tests/results/16_5redefine_multi/rougail/01-redefine.yml
new file mode 100644
index 0000000..1d3ed5e
--- /dev/null
+++ b/tests/results/16_5redefine_multi/rougail/01-redefine.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ default:
+ - non
diff --git a/tests/results/16_5redefine_remove_disable_calculation/rougail/00-base.yml b/tests/results/16_5redefine_remove_disable_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..15b08bd
--- /dev/null
+++ b/tests/results/16_5redefine_remove_disable_calculation/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+variable:
+ description: a variable
+ disabled:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ true
+ {% else %}
+ false
+ {% endif %}
diff --git a/tests/results/16_5redefine_remove_disable_calculation/rougail/01-base.yml b/tests/results/16_5redefine_remove_disable_calculation/rougail/01-base.yml
new file mode 100644
index 0000000..3f9167c
--- /dev/null
+++ b/tests/results/16_5redefine_remove_disable_calculation/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+variable:
+ redefine: true
+ disabled: false
diff --git a/tests/results/16_5test_redefine/rougail/00-base.yml b/tests/results/16_5test_redefine/rougail/00-base.yml
new file mode 100644
index 0000000..8406166
--- /dev/null
+++ b/tests/results/16_5test_redefine/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+var1: no # a first variable
+
+var2:
+ description: a second variable
+ test:
+ - test
+ default: non
+
+var3:
+ description: a third variable
+ test:
+ - test
diff --git a/tests/results/16_5test_redefine/rougail/10-base.yml b/tests/results/16_5test_redefine/rougail/10-base.yml
new file mode 100644
index 0000000..7bfe6f9
--- /dev/null
+++ b/tests/results/16_5test_redefine/rougail/10-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+var1:
+ redefine: true
+ test:
+ - test1
+
+var2:
+ redefine: true
+ test:
+ - test1
+
+var3:
+ redefine: true
+ test:
diff --git a/tests/results/16_6choice_redefine/rougail/00-base.yml b/tests/results/16_6choice_redefine/rougail/00-base.yml
new file mode 100644
index 0000000..60750f3
--- /dev/null
+++ b/tests/results/16_6choice_redefine/rougail/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var:
+ description: A choice
+ type: choice
+ choices:
+ - a
+ - b
+ - c
+ default: c
diff --git a/tests/results/16_6choice_redefine/rougail/01-base.yml b/tests/results/16_6choice_redefine/rougail/01-base.yml
new file mode 100644
index 0000000..b01cc1f
--- /dev/null
+++ b/tests/results/16_6choice_redefine/rougail/01-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+var:
+ redefine: true
+ choices:
+ - a
+ - c
diff --git a/tests/results/16_6exists_redefine_family/rougail/00-base.yml b/tests/results/16_6exists_redefine_family/rougail/00-base.yml
new file mode 100644
index 0000000..473ed7d
--- /dev/null
+++ b/tests/results/16_6exists_redefine_family/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+family1: # a family
+
+ variable1: # a variable
+
+family2: # a second family
+
+ variable2: # a second variable
diff --git a/tests/results/16_6exists_redefine_family/rougail/01-base.yml b/tests/results/16_6exists_redefine_family/rougail/01-base.yml
new file mode 100644
index 0000000..c415f21
--- /dev/null
+++ b/tests/results/16_6exists_redefine_family/rougail/01-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+family1:
+ redefine: true
+ exists: true
+ description: new description
+
+family2:
+ exists: false
+ description: new description
+
+family3:
+ redefine: true
+ exists: true
+ description: new description
diff --git a/tests/results/16exists_exists/rougail/00-base.yml b/tests/results/16exists_exists/rougail/00-base.yml
new file mode 100644
index 0000000..8b31cd7
--- /dev/null
+++ b/tests/results/16exists_exists/rougail/00-base.yml
@@ -0,0 +1,4 @@
+---
+version: 1.1
+
+var: # Description
diff --git a/tests/results/16exists_exists/rougail/01-base.yml b/tests/results/16exists_exists/rougail/01-base.yml
new file mode 100644
index 0000000..73630d5
--- /dev/null
+++ b/tests/results/16exists_exists/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+var:
+ exists: false
+ description: New description
diff --git a/tests/results/17_5redefine_leadership/rougail/00-base.yml b/tests/results/17_5redefine_leadership/rougail/00-base.yml
new file mode 100644
index 0000000..56e83aa
--- /dev/null
+++ b/tests/results/17_5redefine_leadership/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+
+ follower:
+ description: a follower
+ mandatory: false
diff --git a/tests/results/17_5redefine_leadership/rougail/01-base.yml b/tests/results/17_5redefine_leadership/rougail/01-base.yml
new file mode 100644
index 0000000..88a6a11
--- /dev/null
+++ b/tests/results/17_5redefine_leadership/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+leader:
+ redefine: true
+ hidden: true
diff --git a/tests/results/20_0empty_family/rougail/00-base.yml b/tests/results/20_0empty_family/rougail/00-base.yml
new file mode 100644
index 0000000..58bfa92
--- /dev/null
+++ b/tests/results/20_0empty_family/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+my_family:
+ type: family
diff --git a/tests/results/20_0family_append/rougail/00-base.yml b/tests/results/20_0family_append/rougail/00-base.yml
new file mode 100644
index 0000000..dd90eb6
--- /dev/null
+++ b/tests/results/20_0family_append/rougail/00-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family: # A family
+
+ var1: # The first variable
diff --git a/tests/results/20_0family_append/rougail/01-base.yml b/tests/results/20_0family_append/rougail/01-base.yml
new file mode 100644
index 0000000..5d4ac74
--- /dev/null
+++ b/tests/results/20_0family_append/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+
+ var2: # The second variable
diff --git a/tests/results/20_0family_underscore/rougail/00-base.yml b/tests/results/20_0family_underscore/rougail/00-base.yml
new file mode 100644
index 0000000..46f0751
--- /dev/null
+++ b/tests/results/20_0family_underscore/rougail/00-base.yml
@@ -0,0 +1,47 @@
+---
+version: 1.1
+
+my_family:
+ _description: This is a great family
+ _help: This is a great family
+ _mode: standard
+ _hidden: true
+ _disabled: true
+
+ type: # a type family
+
+ my_variable:
+ mandatory: false
+
+ description: # This is a other great family
+
+ my_variable:
+ mandatory: false
+
+ help:
+ description: a help family
+ help: This is a other great family
+
+ my_variable:
+ mandatory: false
+
+ mode:
+ description: a mode family
+ mode: advanced
+
+ my_variable:
+ mandatory: false
+
+ hidden:
+ description: an hidden family
+ hidden: true
+
+ my_variable:
+ mandatory: false
+
+ disabled:
+ description: an disabled family
+ disabled: true
+
+ my_variable:
+ mandatory: false
diff --git a/tests/results/20_0multi_family/rougail/00-base.yml b/tests/results/20_0multi_family/rougail/00-base.yml
new file mode 100644
index 0000000..a826b6b
--- /dev/null
+++ b/tests/results/20_0multi_family/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+family: # a family
+
+ subfamily: # a sub family
+
+ variable:
+ description: a variable
+ mandatory: false
diff --git a/tests/results/20_0multi_family_basic/rougail/00-base.yml b/tests/results/20_0multi_family_basic/rougail/00-base.yml
new file mode 100644
index 0000000..d75bd86
--- /dev/null
+++ b/tests/results/20_0multi_family_basic/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+family: # a family
+
+ subfamily: # a sub family
+
+ variable: # a variable
diff --git a/tests/results/20_0multi_family_expert/rougail/00-base.yml b/tests/results/20_0multi_family_expert/rougail/00-base.yml
new file mode 100644
index 0000000..1320c08
--- /dev/null
+++ b/tests/results/20_0multi_family_expert/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+family:
+ description: a family
+ mode: advanced
+
+ subfamily: # a sub family
+
+ variable:
+ description: a variable
+ mandatory: false
diff --git a/tests/results/20_0multi_family_order/rougail/00-base.yml b/tests/results/20_0multi_family_order/rougail/00-base.yml
new file mode 100644
index 0000000..a1f3c92
--- /dev/null
+++ b/tests/results/20_0multi_family_order/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+variable: # a variable
+
+family: # a family
+
+ variable1: # a first variable
+
+ subfamily: # a sub family
+
+ variable: # a variable
+
+ variable2: # a second variable
diff --git a/tests/results/20_0validators_differ_redefine/rougail/00-base.yml b/tests/results/20_0validators_differ_redefine/rougail/00-base.yml
new file mode 100644
index 0000000..eef705b
--- /dev/null
+++ b/tests/results/20_0validators_differ_redefine/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+var1: no # a first variable
+
+var2: no # a second variable
+
+var3:
+ description: a third variable
+ test:
+ - yes
+ validators:
+ - jinja: |-
+ {% if _.var3 == _.var1 %}
+ var3 must be different than var1
+ {% endif %}
+ description: var3 must be different than var1
+ default: yes
diff --git a/tests/results/20_0validators_differ_redefine/rougail/01-base.yml b/tests/results/20_0validators_differ_redefine/rougail/01-base.yml
new file mode 100644
index 0000000..45cd818
--- /dev/null
+++ b/tests/results/20_0validators_differ_redefine/rougail/01-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var3:
+ redefine: true
+ validators:
+ - jinja: |-
+ {% if _.var3 == _.var2 %}
+ var3 must be different than var2
+ {% endif %}
+ description: var3 must be different than var2
diff --git a/tests/results/20_1empty_subfamily/rougail/00-base.yml b/tests/results/20_1empty_subfamily/rougail/00-base.yml
new file mode 100644
index 0000000..21c7dcf
--- /dev/null
+++ b/tests/results/20_1empty_subfamily/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+my_family:
+
+ my_sub_family:
+ type: family
diff --git a/tests/results/20_9default_information_parent/rougail/00-base.yml b/tests/results/20_9default_information_parent/rougail/00-base.yml
new file mode 100644
index 0000000..652fd5c
--- /dev/null
+++ b/tests/results/20_9default_information_parent/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+family:
+
+ var1: # a first variable
+
+ var2:
+ description: a second variable
+ default:
+ information: test_information
+ variable: __.family
diff --git a/tests/results/20_9family_absolute/rougail/00-base.yml b/tests/results/20_9family_absolute/rougail/00-base.yml
new file mode 100644
index 0000000..6c93659
--- /dev/null
+++ b/tests/results/20_9family_absolute/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var1: # a variable
+
+family: # a family
+
+ var2: # a second variable
+
+ subfamily: # a sub family
+
+ variable: # a variable
+ - variable: ___.var1
+ - variable: __.var2
+
+family2: # a family
+
+ var2:
+ default:
+ variable: __.family.var2
+
+ subfamily: # a sub family
+
+ variable: # a variable
+ - variable: ___.var1
+ - variable: ___.family.var2
+ - variable: __.var2
diff --git a/tests/results/24_0family_hidden_condition/rougail/00-base.yml b/tests/results/24_0family_hidden_condition/rougail/00-base.yml
new file mode 100644
index 0000000..0a9653b
--- /dev/null
+++ b/tests/results/24_0family_hidden_condition/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+condition: no # the variable use has condition
+
+family:
+ description: possibly hidden family
+ hidden:
+ jinja: |-
+ {% if rougail.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+ var1: # a variable
diff --git a/tests/results/24_0family_hidden_condition_boolean/rougail/00-base.yml b/tests/results/24_0family_hidden_condition_boolean/rougail/00-base.yml
new file mode 100644
index 0000000..94be0f8
--- /dev/null
+++ b/tests/results/24_0family_hidden_condition_boolean/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+condition: false # a conditional variable
+
+family:
+ description: a family
+ hidden:
+ jinja: |-
+ {% if not rougail.condition %}
+ condition is false
+ {% endif %}
+ description: if not condition
+
+ variable:
+ description: a variable
+ mandatory: false
diff --git a/tests/results/24_0family_hidden_condition_sub_family/rougail/00-base.yml b/tests/results/24_0family_hidden_condition_sub_family/rougail/00-base.yml
new file mode 100644
index 0000000..6276a83
--- /dev/null
+++ b/tests/results/24_0family_hidden_condition_sub_family/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+condition: no # the variable use has condition
+
+family:
+ description: possibly hidden family
+ hidden:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+
+ subfamily:
+
+ var1: # a variable
diff --git a/tests/results/24_0family_hidden_condition_variable_sub_family/rougail/00-base.yml b/tests/results/24_0family_hidden_condition_variable_sub_family/rougail/00-base.yml
new file mode 100644
index 0000000..4523bfb
--- /dev/null
+++ b/tests/results/24_0family_hidden_condition_variable_sub_family/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+condition: true # the variable use has condition
+
+family:
+ description: possibly hidden family
+ hidden:
+ variable: _.condition
+
+ subfamily: # a subfamily
+
+ var1:
+ description: a variable
+ mandatory: false
diff --git a/tests/results/24_0family_hidden_condition_with_variable/rougail/00-base.yml b/tests/results/24_0family_hidden_condition_with_variable/rougail/00-base.yml
new file mode 100644
index 0000000..7ae07e9
--- /dev/null
+++ b/tests/results/24_0family_hidden_condition_with_variable/rougail/00-base.yml
@@ -0,0 +1,25 @@
+---
+version: 1.1
+
+condition1: false # a first conditional variable
+
+condition2: false # a second conditional variable
+
+family:
+ description: a family
+ hidden:
+ jinja: |-
+ {% if not rougail.condition1 %}
+ condition1 is false
+ {% endif %}
+ description: if condition1 is false
+
+ variable:
+ description: a variable
+ mandatory: false
+ hidden:
+ jinja: |-
+ {% if rougail.condition2 %}
+ condition2 is true
+ {% endif %}
+ description: if condition2 is false
diff --git a/tests/results/24_0family_hidden_param_condition_sub_family/rougail/00-base.yml b/tests/results/24_0family_hidden_param_condition_sub_family/rougail/00-base.yml
new file mode 100644
index 0000000..d1489e2
--- /dev/null
+++ b/tests/results/24_0family_hidden_param_condition_sub_family/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+condition: no # the variable use has condition
+
+family:
+ description: possibly hidden family
+ hidden:
+ jinja: |-
+ {% if condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
+ params:
+ condition:
+ variable: _.condition
+
+ sub_family: # a subfamily
+
+ var1: # a variable
diff --git a/tests/results/24_0family_mandatory_condition/rougail/00-base.yml b/tests/results/24_0family_mandatory_condition/rougail/00-base.yml
new file mode 100644
index 0000000..3420711
--- /dev/null
+++ b/tests/results/24_0family_mandatory_condition/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+var:
+ description: a variable
+ mandatory:
+ jinja: |-
+ {% if _.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: only if rougail.condition has the value "yes"
diff --git a/tests/results/24_0family_mandatory_condition_variable/rougail/00-base.yml b/tests/results/24_0family_mandatory_condition_variable/rougail/00-base.yml
new file mode 100644
index 0000000..0d57ae9
--- /dev/null
+++ b/tests/results/24_0family_mandatory_condition_variable/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+condition: true # a condition
+
+var:
+ description: a variable
+ mandatory:
+ variable: _.condition
diff --git a/tests/results/24_7validators_variable_optional/rougail/00-base.yml b/tests/results/24_7validators_variable_optional/rougail/00-base.yml
new file mode 100644
index 0000000..bdba789
--- /dev/null
+++ b/tests/results/24_7validators_variable_optional/rougail/00-base.yml
@@ -0,0 +1,31 @@
+---
+version: 1.1
+
+general: # a family
+
+ int:
+ description: a first number
+ test:
+ - 5
+ type: number
+ validators:
+ - jinja: |-
+ {% if _.int == int2 %}
+ int and int2 must be different
+ {% endif %}
+ description: int and int2 must be different
+ params:
+ int2:
+ variable: _.int2
+ optional: true
+ - jinja: |-
+ {% if int3 is defined and _.int == int3 %}
+ int and int3 must be different
+ {% endif %}
+ description: int and int3 must be different
+ params:
+ int3:
+ variable: _.int3
+ optional: true
+
+ int2: 1 # a second number
diff --git a/tests/results/24_family_disabled_var_hidden/rougail/00-base.yml b/tests/results/24_family_disabled_var_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..d919687
--- /dev/null
+++ b/tests/results/24_family_disabled_var_hidden/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+family:
+ disabled: true
+
+ var1: true # A description
+
+ var2:
+ description: A description
+ hidden:
+ variable: _.var1
diff --git a/tests/results/40_0leadership/rougail/00-base.yml b/tests/results/40_0leadership/rougail/00-base.yml
new file mode 100644
index 0000000..0eac439
--- /dev/null
+++ b/tests/results/40_0leadership/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # a leader
+
+ follower1: # a follower
+
+ follower2: # an other follower
diff --git a/tests/results/40_0leadership_diff_name/rougail/00-base.yml b/tests/results/40_0leadership_diff_name/rougail/00-base.yml
new file mode 100644
index 0000000..5ad6bb2
--- /dev/null
+++ b/tests/results/40_0leadership_diff_name/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+leadership:
+ description: a leadership
+ type: leadership
+
+ leader: [] # a leader
+
+ follower1: # a follower
+
+ follower2: # an other follower
diff --git a/tests/results/40_0leadership_empty/rougail/00-base.yml b/tests/results/40_0leadership_empty/rougail/00-base.yml
new file mode 100644
index 0000000..f58be2d
--- /dev/null
+++ b/tests/results/40_0leadership_empty/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+empty_leader:
+ type: leadership
diff --git a/tests/results/40_0leadership_follower_default_calculation/rougail/00-base.yml b/tests/results/40_0leadership_follower_default_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..415a701
--- /dev/null
+++ b/tests/results/40_0leadership_follower_default_calculation/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # a leader
+
+ follower1: value # a follower
+
+ follower2:
+ description: a second follower
+ default:
+ jinja: >-
+ {{ _.follower1 }}
+ description: returns follower1 value
diff --git a/tests/results/40_0leadership_follower_default_submulti/rougail/00-base.yml b/tests/results/40_0leadership_follower_default_submulti/rougail/00-base.yml
new file mode 100644
index 0000000..917e2a1
--- /dev/null
+++ b/tests/results/40_0leadership_follower_default_submulti/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # a leader
+ - leader
+
+ follower1: # a follower1
+ - value
+
+ follower2: # a follower2
+ - value1
+ - value2
diff --git a/tests/results/40_0leadership_follower_default_submulti_calculation/rougail/00-base.yml b/tests/results/40_0leadership_follower_default_submulti_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..7473096
--- /dev/null
+++ b/tests/results/40_0leadership_follower_default_submulti_calculation/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # the leader
+ - leader
+
+ follower1: # the follower1
+ - value
+
+ follower2:
+ description: the follower2
+ multi: true
+ default:
+ variable: _.follower1
diff --git a/tests/results/40_0leadership_follower_default_value/rougail/00-base.yml b/tests/results/40_0leadership_follower_default_value/rougail/00-base.yml
new file mode 100644
index 0000000..d14f001
--- /dev/null
+++ b/tests/results/40_0leadership_follower_default_value/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+
+ follower1: value # a follower with default value
diff --git a/tests/results/40_0leadership_leader_not_multi/rougail/00-base.yml b/tests/results/40_0leadership_leader_not_multi/rougail/00-base.yml
new file mode 100644
index 0000000..b4fd0d5
--- /dev/null
+++ b/tests/results/40_0leadership_leader_not_multi/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+general:
+
+ mode_conteneur_actif: non # No change
+
+general1:
+
+ leader:
+ description: leader
+ type: leadership
+
+ leader: # leader
+
+ follower1: # follower1
+
+ follower2: # follower2
diff --git a/tests/results/40_1leadership_append_follower/rougail/00-base.yml b/tests/results/40_1leadership_append_follower/rougail/00-base.yml
new file mode 100644
index 0000000..da49536
--- /dev/null
+++ b/tests/results/40_1leadership_append_follower/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: the leader
+ multi: true
+
+ follower1: # the follower1
+
+ follower2: # the follower2
diff --git a/tests/results/40_1leadership_append_follower/rougail/01-base.yml b/tests/results/40_1leadership_append_follower/rougail/01-base.yml
new file mode 100644
index 0000000..2d653ac
--- /dev/null
+++ b/tests/results/40_1leadership_append_follower/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+leader:
+
+ follower3: # the follower3
diff --git a/tests/results/40_2leadership_calculation_index/rougail/00-base.yml b/tests/results/40_2leadership_calculation_index/rougail/00-base.yml
new file mode 100644
index 0000000..d9d8488
--- /dev/null
+++ b/tests/results/40_2leadership_calculation_index/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # a leader
+ - a
+ - b
+ - c
+
+ follower1:
+ description: a follower
+ type: number
+ 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
new file mode 100644
index 0000000..c825de4
--- /dev/null
+++ b/tests/results/40_2leadership_calculation_param_index/rougail/00-base.yml
@@ -0,0 +1,22 @@
+---
+version: 1.1
+
+leader:
+ description: leadership
+ type: leadership
+
+ leader: # a leader
+ - a
+ - b
+ - c
+
+ follower1:
+ description: a follower
+ type: number
+ default:
+ jinja: >-
+ {{ index }}
+ description: returns index
+ params:
+ index:
+ type: index
diff --git a/tests/results/40_2leadership_leader_calculation/rougail/00-base.yml b/tests/results/40_2leadership_leader_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..7302561
--- /dev/null
+++ b/tests/results/40_2leadership_leader_calculation/rougail/00-base.yml
@@ -0,0 +1,19 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ default:
+ jinja: |-
+ val1
+ val2
+ description: returns val1 and val2
+
+ follower1: # a first follower
+
+ follower2: # a second follower
diff --git a/tests/results/40_6leadership_follower_multi/rougail/00-base.yml b/tests/results/40_6leadership_follower_multi/rougail/00-base.yml
new file mode 100644
index 0000000..6a9b63d
--- /dev/null
+++ b/tests/results/40_6leadership_follower_multi/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+leadership:
+ description: A leadership
+ type: leadership
+
+ leader:
+ description: The leader
+ multi: true
+
+ follower1:
+ description: The first follower
+ multi: true
+
+ follower2: # The second follower
+ - value
diff --git a/tests/results/40_8calculation_boolean/rougail/00-base.yml b/tests/results/40_8calculation_boolean/rougail/00-base.yml
new file mode 100644
index 0000000..f639683
--- /dev/null
+++ b/tests/results/40_8calculation_boolean/rougail/00-base.yml
@@ -0,0 +1,32 @@
+---
+version: 1.1
+
+bool: false # a boolean variable
+
+multi1:
+ description: a first multi variable
+ type: boolean
+ multi: true
+ default:
+ jinja: |-
+ {% if _.bool %}
+ True
+ False
+ {% else %}
+ False
+ {% endif %}
+ description: a calculation
+
+multi2:
+ description: a second multi variable
+ type: boolean
+ multi: true
+ default:
+ jinja: |-
+ {% if not _.bool %}
+ True
+ False
+ {% else %}
+ False
+ {% endif %}
+ description: a calculation
diff --git a/tests/results/40_8calculation_boolean_return_none/rougail/00-base.yml b/tests/results/40_8calculation_boolean_return_none/rougail/00-base.yml
new file mode 100644
index 0000000..160a2ee
--- /dev/null
+++ b/tests/results/40_8calculation_boolean_return_none/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var1: yes # a first variable
+
+var2:
+ description: a second variable
+ type: boolean
+ default:
+ jinja: >-
+ {% if rougail.var1 == 'no' %}
+ false
+ {% endif %}
+ description: return false if the value of var1 is "no"
diff --git a/tests/results/40_8calculation_integer/rougail/00-base.yml b/tests/results/40_8calculation_integer/rougail/00-base.yml
new file mode 100644
index 0000000..2ef78fd
--- /dev/null
+++ b/tests/results/40_8calculation_integer/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+bool: false # a boolean variable
+
+int1:
+ description: first integer variable
+ type: number
+ default:
+ jinja: >-
+ {% if rougail.bool %}1{% else %}2{% endif %}
+ description: if bool returns 1 otherwise return 2
+
+int2:
+ description: second integer variable
+ type: number
+ default:
+ jinja: >-
+ {% if not rougail.bool %}3{% else %}4{% endif %}
+ description: if bool returns 3 otherwise return 4
diff --git a/tests/results/40_8calculation_multi_variable/rougail/00-base.yml b/tests/results/40_8calculation_multi_variable/rougail/00-base.yml
new file mode 100644
index 0000000..b9cbe06
--- /dev/null
+++ b/tests/results/40_8calculation_multi_variable/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+var: # a first variable
+ - variable: _.var2
+ - variable: _.var3
+
+var2: no # a second variable
+
+var3: yes # a third variable
diff --git a/tests/results/40_8calculation_multi_variable_parent/rougail/00-base.yml b/tests/results/40_8calculation_multi_variable_parent/rougail/00-base.yml
new file mode 100644
index 0000000..7f7365a
--- /dev/null
+++ b/tests/results/40_8calculation_multi_variable_parent/rougail/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var: no # a variable
+
+fam1: # a family
+
+ var:
+ description: a calculated variable
+ default:
+ variable: __.var
diff --git a/tests/results/40_8calculation_multi_variable_parent2/rougail/00-base.yml b/tests/results/40_8calculation_multi_variable_parent2/rougail/00-base.yml
new file mode 100644
index 0000000..7bec40d
--- /dev/null
+++ b/tests/results/40_8calculation_multi_variable_parent2/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+fam1: # first family
+
+ var: no # a variable
+
+fam2: # second family
+
+ var:
+ description: a varaible
+ default:
+ variable: __.fam1.var
diff --git a/tests/results/41_0choice_leader/rougail/00-base.yml b/tests/results/41_0choice_leader/rougail/00-base.yml
new file mode 100644
index 0000000..60316ad
--- /dev/null
+++ b/tests/results/41_0choice_leader/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+leader:
+ description: The leadership
+ type: leadership
+
+ leader:
+ description: The leader
+ multi: true
+ mandatory: false
+
+ follower1:
+ description: A follower
+ choices:
+ - a
+ - b
+ - c
diff --git a/tests/results/44_0leadership_hidden/rougail/00-base.yml b/tests/results/44_0leadership_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..8f16923
--- /dev/null
+++ b/tests/results/44_0leadership_hidden/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+ hidden: true
+
+ leader:
+ description: a leader
+ mandatory: false
+
+ follower:
+ description: a follower
+ mandatory: false
diff --git a/tests/results/44_0leadership_leader_hidden/rougail/00-base.yml b/tests/results/44_0leadership_leader_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..48d59f6
--- /dev/null
+++ b/tests/results/44_0leadership_leader_hidden/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+ hidden: true
+
+ follower:
+ description: a follower
+ mandatory: false
diff --git a/tests/results/44_1leadership_append_hidden_follower/rougail/00-base.yml b/tests/results/44_1leadership_append_hidden_follower/rougail/00-base.yml
new file mode 100644
index 0000000..31ae385
--- /dev/null
+++ b/tests/results/44_1leadership_append_hidden_follower/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+ hidden: true
+
+ follower1:
+ description: the follower1
+ mandatory: false
+
+ follower2:
+ description: the follower2
+ mandatory: false
diff --git a/tests/results/44_1leadership_append_hidden_follower/rougail/01-base.yml b/tests/results/44_1leadership_append_hidden_follower/rougail/01-base.yml
new file mode 100644
index 0000000..bb92a74
--- /dev/null
+++ b/tests/results/44_1leadership_append_hidden_follower/rougail/01-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+leader:
+
+ follower3:
+ description: follower3
+ mandatory: false
diff --git a/tests/results/44_4disabled_calcultion_follower/rougail/00-base.yml b/tests/results/44_4disabled_calcultion_follower/rougail/00-base.yml
new file mode 100644
index 0000000..089e569
--- /dev/null
+++ b/tests/results/44_4disabled_calcultion_follower/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+condition: true # a condition
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader: # aleader
+ - a
+
+ follower:
+ description: a follower
+ disabled:
+ jinja: |-
+ {% if rougail.condition == "yes" %}
+ condition is yes
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/44_4leadership_mandatory/rougail/00-base.yml b/tests/results/44_4leadership_mandatory/rougail/00-base.yml
new file mode 100644
index 0000000..eeb965e
--- /dev/null
+++ b/tests/results/44_4leadership_mandatory/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+
+ follower1:
+ description: a follower
+ mandatory: false
diff --git a/tests/results/44_4leadership_mandatory_follower/rougail/00-base.yml b/tests/results/44_4leadership_mandatory_follower/rougail/00-base.yml
new file mode 100644
index 0000000..424e996
--- /dev/null
+++ b/tests/results/44_4leadership_mandatory_follower/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+
+ follower: # a follower
diff --git a/tests/results/44_5leadership_leader_hidden_calculation/rougail/00-base.yml b/tests/results/44_5leadership_leader_hidden_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..cb21554
--- /dev/null
+++ b/tests/results/44_5leadership_leader_hidden_calculation/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+condition: no # a condition
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+ mandatory: false
+ hidden:
+ jinja: |-
+ {% if __.condition == "no" %}
+ condition is no
+ {% endif %}
+ description: if condition is no
+
+ follower: # a follower
diff --git a/tests/results/44_6leadership_follower_disabled_calculation/rougail/00-base.yml b/tests/results/44_6leadership_follower_disabled_calculation/rougail/00-base.yml
new file mode 100644
index 0000000..2e22dda
--- /dev/null
+++ b/tests/results/44_6leadership_follower_disabled_calculation/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+condition: yes # a condition
+
+leader:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+
+ follower:
+ description: a follower
+ disabled:
+ jinja: |-
+ {% if __.condition == "yes" %}
+ disabled
+ {% endif %}
+ description: if condition is yes
diff --git a/tests/results/44_9calculated_default_leadership_leader/rougail/00-base.yml b/tests/results/44_9calculated_default_leadership_leader/rougail/00-base.yml
new file mode 100644
index 0000000..6fbf6ca
--- /dev/null
+++ b/tests/results/44_9calculated_default_leadership_leader/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+leader:
+ description: leader
+ type: leadership
+
+ leader: # a leader
+ - a
+ - b
+
+ follower:
+ description: a follower
+ default:
+ variable: _.leader
+ disabled:
+ jinja: |-
+ {% if _.leader == "a" %}
+ the value of "leader" is "a"
+ {% endif %}
+ description: if the value of "leader" is "a"
diff --git a/tests/results/60_0family_dynamic/rougail/00-base.yml b/tests/results/60_0family_dynamic/rougail/00-base.yml
new file mode 100644
index 0000000..201d4b4
--- /dev/null
+++ b/tests/results/60_0family_dynamic/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var: # A dynamic variable
diff --git a/tests/results/60_0family_dynamic_1_0/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_0/rougail/00-base.yml
new file mode 100644
index 0000000..cc499d5
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_0/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ vardyn:
+ description: Dynamic variable
+ mandatory: false
diff --git a/tests/results/60_0family_dynamic_1_0_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_0_empty/rougail/00-base.yml
new file mode 100644
index 0000000..3119287
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_0_empty/rougail/00-base.yml
@@ -0,0 +1,19 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ vardyn:
+ description: Dynamic variable
+ mandatory: false
diff --git a/tests/results/60_0family_dynamic_1_0_type/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_0_type/rougail/00-base.yml
new file mode 100644
index 0000000..591c8f8
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_0_type/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ vardyn: # A dyn variable
diff --git a/tests/results/60_0family_dynamic_1_0_type_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_0_type_empty/rougail/00-base.yml
new file mode 100644
index 0000000..dd94538
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_0_type_empty/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ vardyn: # A dyn variable
diff --git a/tests/results/60_0family_dynamic_1_1/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_1/rougail/00-base.yml
new file mode 100644
index 0000000..704162b
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_1/rougail/00-base.yml
@@ -0,0 +1,15 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+ propertyerror: false
+ allow_none: true
+
+ vardyn: # A dynamic variable
diff --git a/tests/results/60_0family_dynamic_1_1_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_1_1_empty/rougail/00-base.yml
new file mode 100644
index 0000000..654f272
--- /dev/null
+++ b/tests/results/60_0family_dynamic_1_1_empty/rougail/00-base.yml
@@ -0,0 +1,19 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+ propertyerror: false
+ allow_none: true
+
+ vardyn: # A dynamic variable
diff --git a/tests/results/60_0family_dynamic_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_empty/rougail/00-base.yml
new file mode 100644
index 0000000..4495ea6
--- /dev/null
+++ b/tests/results/60_0family_dynamic_empty/rougail/00-base.yml
@@ -0,0 +1,14 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var: # A dynamic variable
diff --git a/tests/results/60_0family_dynamic_jinja_number/rougail/00-base.yml b/tests/results/60_0family_dynamic_jinja_number/rougail/00-base.yml
new file mode 100644
index 0000000..6ba0b98
--- /dev/null
+++ b/tests/results/60_0family_dynamic_jinja_number/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - 1
+ - 2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var: val # a variable inside dynamic family
+
+var2:
+ description: a variable
+ default:
+ jinja: >-
+ {{ rougail.dyn1.var }}
+ description: get the value of rougail.dyn1.var
diff --git a/tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml
new file mode 100644
index 0000000..5d7246f
--- /dev/null
+++ b/tests/results/60_0family_dynamic_jinja_number_empty/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - 1
+ - 2
+ type: number
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var: val # a variable inside dynamic family
+
+var2:
+ description: a variable
+ default:
+ jinja: >-
+ {% if rougail.dyn1 is defined %}
+ {{ rougail.dyn1.var }}
+ {% endif %}
+ description: get the value of rougail.dyn1.var
diff --git a/tests/results/60_0family_dynamic_no_description/rougail/00-base.yml b/tests/results/60_0family_dynamic_no_description/rougail/00-base.yml
new file mode 100644
index 0000000..bfdd478
--- /dev/null
+++ b/tests/results/60_0family_dynamic_no_description/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
diff --git a/tests/results/60_0family_dynamic_no_description_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_no_description_empty/rougail/00-base.yml
new file mode 100644
index 0000000..a65ae27
--- /dev/null
+++ b/tests/results/60_0family_dynamic_no_description_empty/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
diff --git a/tests/results/60_0family_dynamic_static/rougail/00-base.yml b/tests/results/60_0family_dynamic_static/rougail/00-base.yml
new file mode 100644
index 0000000..8ff60b5
--- /dev/null
+++ b/tests/results/60_0family_dynamic_static/rougail/00-base.yml
@@ -0,0 +1,10 @@
+---
+version: 1.1
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ - val1
+ - val2
+
+ var: # a variable inside a dynamic family
diff --git a/tests/results/60_0family_dynamic_test/rougail/00-base.yml b/tests/results/60_0family_dynamic_test/rougail/00-base.yml
new file mode 100644
index 0000000..f95265d
--- /dev/null
+++ b/tests/results/60_0family_dynamic_test/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var: # A dynamic variable
diff --git a/tests/results/60_0family_dynamic_variable_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_variable_empty/rougail/00-base.yml
new file mode 100644
index 0000000..7b4f280
--- /dev/null
+++ b/tests/results/60_0family_dynamic_variable_empty/rougail/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var: [] # a suffix variable
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var: val # a variable inside dynamic family
diff --git a/tests/results/60_0family_dynamic_variable_suffix/rougail/00-base.yml b/tests/results/60_0family_dynamic_variable_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..83e9af8
--- /dev/null
+++ b/tests/results/60_0family_dynamic_variable_suffix/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var: a value # A dynamic variable with suffix {{ identifier }}
diff --git a/tests/results/60_0family_dynamic_variable_suffix_empty/rougail/00-base.yml b/tests/results/60_0family_dynamic_variable_suffix_empty/rougail/00-base.yml
new file mode 100644
index 0000000..8c79309
--- /dev/null
+++ b/tests/results/60_0family_dynamic_variable_suffix_empty/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var: a value # A dynamic variable with suffix {{ identifier }}
diff --git a/tests/results/60_0family_empty/rougail/00-base.yml b/tests/results/60_0family_empty/rougail/00-base.yml
new file mode 100644
index 0000000..0992428
--- /dev/null
+++ b/tests/results/60_0family_empty/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+general2:
+ type: family
diff --git a/tests/results/60_0family_hidden/rougail/00-base.yml b/tests/results/60_0family_hidden/rougail/00-base.yml
new file mode 100644
index 0000000..4831a45
--- /dev/null
+++ b/tests/results/60_0family_hidden/rougail/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+family: # a family
+
+ var:
+ description: a variable
+ mandatory: false
diff --git a/tests/results/60_0family_hidden/rougail/01-base.yml b/tests/results/60_0family_hidden/rougail/01-base.yml
new file mode 100644
index 0000000..d70b25b
--- /dev/null
+++ b/tests/results/60_0family_hidden/rougail/01-base.yml
@@ -0,0 +1,6 @@
+---
+version: 1.1
+
+family:
+ redefine: true
+ hidden: true
diff --git a/tests/results/60_0family_mode/rougail/00-base.yml b/tests/results/60_0family_mode/rougail/00-base.yml
new file mode 100644
index 0000000..09cde1f
--- /dev/null
+++ b/tests/results/60_0family_mode/rougail/00-base.yml
@@ -0,0 +1,9 @@
+---
+version: 1.1
+
+family: # a family
+
+ var:
+ description: A variable
+ mode: basic
+ default: non
diff --git a/tests/results/60_1family_dynamic_jinja/rougail/00-base.yml b/tests/results/60_1family_dynamic_jinja/rougail/00-base.yml
new file mode 100644
index 0000000..2a8f646
--- /dev/null
+++ b/tests/results/60_1family_dynamic_jinja/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ jinja: |-
+ {% for val in _.var %}
+ {{ loop.index }}
+ {% endfor %}
+ description: index of suffix value
+
+ var: val # a dynamic variable
diff --git a/tests/results/60_2family_dynamic_jinja_fill_sub_group/rougail/00-base.yml b/tests/results/60_2family_dynamic_jinja_fill_sub_group/rougail/00-base.yml
new file mode 100644
index 0000000..e47f608
--- /dev/null
+++ b/tests/results/60_2family_dynamic_jinja_fill_sub_group/rougail/00-base.yml
@@ -0,0 +1,22 @@
+---
+version: 1.1
+
+var1: # a suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var1
+
+ family: # a family
+
+ var: # with a variable
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ _.dynval1.family.var }}
+ description: the value of var
diff --git a/tests/results/60_2family_dynamic_jinja_fill_sub_group_2/rougail/00-base.yml b/tests/results/60_2family_dynamic_jinja_fill_sub_group_2/rougail/00-base.yml
new file mode 100644
index 0000000..6d6c1a9
--- /dev/null
+++ b/tests/results/60_2family_dynamic_jinja_fill_sub_group_2/rougail/00-base.yml
@@ -0,0 +1,25 @@
+---
+version: 1.1
+
+var: # a identifier variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ family: # a family inside dynamic family
+
+ var:
+ description: a dynamic variable
+ default:
+ type: identifier
+
+var2:
+ description: a varible outside dynamic family
+ default:
+ jinja: >-
+ {{ _.dynval1.family.var }}
+ description: the value of var
diff --git a/tests/results/60_2family_dynamic_jinja_fill_sub_group_2_empty/rougail/00-base.yml b/tests/results/60_2family_dynamic_jinja_fill_sub_group_2_empty/rougail/00-base.yml
new file mode 100644
index 0000000..ab60e0c
--- /dev/null
+++ b/tests/results/60_2family_dynamic_jinja_fill_sub_group_2_empty/rougail/00-base.yml
@@ -0,0 +1,32 @@
+---
+version: 1.1
+
+var:
+ description: a identifier variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ family: # a family inside dynamic family
+
+ var:
+ description: a dynamic variable
+ default:
+ type: identifier
+
+var2:
+ description: a varible outside dynamic family
+ default:
+ jinja: >-
+ {% if _.dynval1 is defined %}
+ {{ _.dynval1.family.var }}
+ {% endif %}
+ description: the value of var
+ mandatory: false
diff --git a/tests/results/60_2family_dynamic_jinja_fill_sub_group_empty/rougail/00-base.yml b/tests/results/60_2family_dynamic_jinja_fill_sub_group_empty/rougail/00-base.yml
new file mode 100644
index 0000000..3933007
--- /dev/null
+++ b/tests/results/60_2family_dynamic_jinja_fill_sub_group_empty/rougail/00-base.yml
@@ -0,0 +1,29 @@
+---
+version: 1.1
+
+var1:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var1
+
+ family: # a family
+
+ var: # with a variable
+
+var2:
+ description: a second variable
+ default:
+ jinja: >-
+ {% if _.dynval1 is defined %}
+ {{ _.dynval1.family.var }}
+ {% endif %}
+ description: the value of var
+ mandatory: false
diff --git a/tests/results/60_2family_dynamic_outside_calc/rougail/00-base.yml b/tests/results/60_2family_dynamic_outside_calc/rougail/00-base.yml
new file mode 100644
index 0000000..037f0ab
--- /dev/null
+++ b/tests/results/60_2family_dynamic_outside_calc/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+var1: # a suffx variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var1
+
+ var: val # a dynamic variable
+
+newvar:
+ description: a second variable
+ default:
+ jinja: >-
+ {{ _.dynval1.var }}
+ description: the value of var
diff --git a/tests/results/60_2family_dynamic_outside_calc_empty/rougail/00-base.yml b/tests/results/60_2family_dynamic_outside_calc_empty/rougail/00-base.yml
new file mode 100644
index 0000000..7fd69cb
--- /dev/null
+++ b/tests/results/60_2family_dynamic_outside_calc_empty/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var1:
+ description: a suffx variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var1
+
+ var: val # a dynamic variable
+
+newvar:
+ description: a second variable
+ default:
+ jinja: >-
+ {% if _.dynval1 is defined %}
+ {{ _.dynval1.var }}
+ {% endif %}
+ description: the value of var
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_calc2/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc2/rougail/00-base.yml
new file mode 100644
index 0000000..5494ad7
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc2/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+var: # A suffix variable
+ - val1
+ - val2
+
+var2: # a second variable
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ hidden:
+ jinja: |-
+ {% if _.var2 == "no" %}
+ var2 is no
+ {% endif %}
+ description: if var2 is no
+ dynamic:
+ variable: _.var
+
+ vardyn: val # a dynamic variable
diff --git a/tests/results/60_5family_dynamic_calc2_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc2_empty/rougail/00-base.yml
new file mode 100644
index 0000000..e5c4040
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc2_empty/rougail/00-base.yml
@@ -0,0 +1,25 @@
+---
+version: 1.1
+
+var:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+var2: # a second variable
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ hidden:
+ jinja: |-
+ {% if _.var2 == "no" %}
+ var2 is no
+ {% endif %}
+ description: if var2 is no
+ dynamic:
+ variable: _.var
+
+ vardyn: val # a dynamic variable
diff --git a/tests/results/60_5family_dynamic_calc_suffix/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..85d3cf5
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix/rougail/00-base.yml
@@ -0,0 +1,17 @@
+---
+version: 1.1
+
+var1: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var1
+
+ var: # A dynamic variable
+
+var2:
+ description: A variable calculated
+ default:
+ variable: _.dynval1.var
diff --git a/tests/results/60_5family_dynamic_calc_suffix2/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix2/rougail/00-base.yml
new file mode 100644
index 0000000..b87f8cd
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix2/rougail/00-base.yml
@@ -0,0 +1,16 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: Suffix has value
+ default:
+ type: identifier
diff --git a/tests/results/60_5family_dynamic_calc_suffix2_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix2_empty/rougail/00-base.yml
new file mode 100644
index 0000000..10b16de
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix2_empty/rougail/00-base.yml
@@ -0,0 +1,20 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: Suffix has value
+ default:
+ type: identifier
diff --git a/tests/results/60_5family_dynamic_calc_suffix_disabled/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix_disabled/rougail/00-base.yml
new file mode 100644
index 0000000..9aea116
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix_disabled/rougail/00-base.yml
@@ -0,0 +1,13 @@
+---
+version: 1.1
+
+dyn{{ identifier }}:
+ dynamic:
+ - val1
+ - val2
+
+ var:
+ description: A dynamic variable
+ disabled:
+ type: identifier
+ when: val1
diff --git a/tests/results/60_5family_dynamic_calc_suffix_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix_empty/rougail/00-base.yml
new file mode 100644
index 0000000..d2679d2
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix_empty/rougail/00-base.yml
@@ -0,0 +1,22 @@
+---
+version: 1.1
+
+var1:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var1
+
+ var: # A dynamic variable
+
+var2:
+ description: A variable calculated
+ default:
+ variable: _.dynval1.var
+ optional: true
diff --git a/tests/results/60_5family_dynamic_calc_suffix_param/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix_param/rougail/00-base.yml
new file mode 100644
index 0000000..2347c6c
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix_param/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+var: # A identifier variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A dynamic variable
+ default:
+ jinja: >-
+ {{ identifier }}
+ description: from suffix
+ params:
+ identifier:
+ type: identifier
diff --git a/tests/results/60_5family_dynamic_calc_suffix_param_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_suffix_param_empty/rougail/00-base.yml
new file mode 100644
index 0000000..28adc12
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_suffix_param_empty/rougail/00-base.yml
@@ -0,0 +1,25 @@
+---
+version: 1.1
+
+var:
+ description: A identifier variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A dynamic variable
+ default:
+ jinja: >-
+ {{ identifier }}
+ description: from suffix
+ params:
+ identifier:
+ type: identifier
diff --git a/tests/results/60_5family_dynamic_calc_variable/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_variable/rougail/00-base.yml
new file mode 100644
index 0000000..94c74e9
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_variable/rougail/00-base.yml
@@ -0,0 +1,18 @@
+---
+version: 1.1
+
+var1: # A suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var1
+ propertyerror: false
+
+ var: # A dynamic variable
+
+var2:
+ description: A variable calculated
+ default:
+ variable: _.dynval1.var
diff --git a/tests/results/60_5family_dynamic_calc_variable_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_calc_variable_empty/rougail/00-base.yml
new file mode 100644
index 0000000..8ed8065
--- /dev/null
+++ b/tests/results/60_5family_dynamic_calc_variable_empty/rougail/00-base.yml
@@ -0,0 +1,23 @@
+---
+version: 1.1
+
+var1:
+ description: A suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ dynamic:
+ variable: _.var1
+ propertyerror: false
+
+ var: # A dynamic variable
+
+var2:
+ description: A variable calculated
+ default:
+ variable: _.dynval1.var
+ optional: true
diff --git a/tests/results/60_5family_dynamic_hidden_suffix/rougail/00-base.yml b/tests/results/60_5family_dynamic_hidden_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..ee22705
--- /dev/null
+++ b/tests/results/60_5family_dynamic_hidden_suffix/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ hidden:
+ jinja: |-
+ {% if suffix == 'val2' %}
+ disabled
+ {% endif %}
+ description: if suffix == 'val2'
+ params:
+ suffix:
+ type: identifier
+ dynamic:
+ - val1
+ - val2
+
+ var:
+ description: a variable
+ mandatory: false
+
+ family: # a family
+
+ var:
+ description: a new variable
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_unknown_suffix/rougail/00-base.yml b/tests/results/60_5family_dynamic_unknown_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..b06d055
--- /dev/null
+++ b/tests/results/60_5family_dynamic_unknown_suffix/rougail/00-base.yml
@@ -0,0 +1,43 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ - val3
+ - val4
+ default:
+ - val1
+ - val2
+
+'{{ identifier }}_dyn':
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var1:
+ description: a variable 1
+ default:
+ type: identifier
+
+ var2:
+ description: a variable 2
+ default:
+ variable: _.var1
+
+ var3:
+ description: a variable 3
+ default:
+ variable: _.var1
+
+ var4:
+ description: a variable 4
+ default:
+ variable: __.val4_dyn.var1
+ disabled:
+ jinja: |-
+ {% if 'val4' not in __.var %}
+ val4 is not a valid value
+ {% endif %}
diff --git a/tests/results/60_5family_dynamic_unknown_suffix_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_unknown_suffix_empty/rougail/00-base.yml
new file mode 100644
index 0000000..2e6f12d
--- /dev/null
+++ b/tests/results/60_5family_dynamic_unknown_suffix_empty/rougail/00-base.yml
@@ -0,0 +1,42 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ - val3
+ - val4
+ multi: true
+ mandatory: false
+
+'{{ identifier }}_dyn':
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var1:
+ description: a variable 1
+ default:
+ type: identifier
+
+ var2:
+ description: a variable 2
+ default:
+ variable: _.var1
+
+ var3:
+ description: a variable 3
+ default:
+ variable: _.var1
+
+ var4:
+ description: a variable 4
+ default:
+ variable: __.val4_dyn.var1
+ disabled:
+ jinja: |-
+ {% if 'val4' not in __.var %}
+ val4 is not a valid value
+ {% endif %}
diff --git a/tests/results/60_5family_dynamic_variable_outside/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside/rougail/00-base.yml
new file mode 100644
index 0000000..416b527
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside/rougail/00-base.yml
@@ -0,0 +1,23 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_{{ identifier }}.var
diff --git a/tests/results/60_5family_dynamic_variable_outside2/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside2/rougail/00-base.yml
new file mode 100644
index 0000000..d4651a1
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside2/rougail/00-base.yml
@@ -0,0 +1,23 @@
+---
+version: 1.1
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_{{ identifier }}.var
+
+var: # a suffix variable
+ - val1
+ - val2
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_variable_outside2_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside2_empty/rougail/00-base.yml
new file mode 100644
index 0000000..3cfbac2
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside2_empty/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_{{ identifier }}.var
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_variable_outside_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_empty/rougail/00-base.yml
new file mode 100644
index 0000000..60048f1
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_empty/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_{{ identifier }}.var
diff --git a/tests/results/60_5family_dynamic_variable_outside_jinja/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_jinja/rougail/00-base.yml
new file mode 100644
index 0000000..5e83385
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_jinja/rougail/00-base.yml
@@ -0,0 +1,29 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ jinja: |-
+ {%- for v in var %}
+ {{ v }}
+ {%- endfor -%}
+ params:
+ var:
+ variable: _.my_dyn_family_{{ identifier }}.var
diff --git a/tests/results/60_5family_dynamic_variable_outside_jinja_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_jinja_empty/rougail/00-base.yml
new file mode 100644
index 0000000..8d898d8
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_jinja_empty/rougail/00-base.yml
@@ -0,0 +1,33 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside a dynamic family
+ default:
+ type: identifier
+ mandatory: false
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ jinja: |-
+ {%- for v in var %}
+ {{ v }}
+ {%- endfor -%}
+ params:
+ var:
+ variable: _.my_dyn_family_{{ identifier }}.var
diff --git a/tests/results/60_5family_dynamic_variable_outside_sub_suffix/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_sub_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..bebd118
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_sub_suffix/rougail/00-base.yml
@@ -0,0 +1,29 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ subdyn_{{ identifier }}:
+ description: a sub dynamic family
+ dynamic:
+ variable: __.var
+
+ var:
+ description: a variable inside a sub dynamic family
+ default:
+ type: identifier
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_val1.subdyn_{{ identifier }}.var
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_variable_outside_sub_suffix_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_sub_suffix_empty/rougail/00-base.yml
new file mode 100644
index 0000000..6a39204
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_sub_suffix_empty/rougail/00-base.yml
@@ -0,0 +1,34 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+my_dyn_family_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ subdyn_{{ identifier }}:
+ description: a sub dynamic family
+ dynamic:
+ variable: __.var
+
+ var:
+ description: a variable inside a sub dynamic family
+ default:
+ type: identifier
+
+var2:
+ description: a variable
+ multi: true
+ default:
+ variable: _.my_dyn_family_val1.subdyn_{{ identifier }}.var
+ optional: true
+ mandatory: false
diff --git a/tests/results/60_5family_dynamic_variable_outside_suffix/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_suffix/rougail/00-base.yml
new file mode 100644
index 0000000..a8138ce
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_suffix/rougail/00-base.yml
@@ -0,0 +1,21 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+dyn_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside dynamic family
+ default:
+ type: identifier
+
+var2:
+ description: a variable
+ default:
+ variable: _.dyn_val1.var
diff --git a/tests/results/60_5family_dynamic_variable_outside_suffix_empty/rougail/00-base.yml b/tests/results/60_5family_dynamic_variable_outside_suffix_empty/rougail/00-base.yml
new file mode 100644
index 0000000..4f53efa
--- /dev/null
+++ b/tests/results/60_5family_dynamic_variable_outside_suffix_empty/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var:
+ description: asuffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn_{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: a variable inside dynamic family
+ default:
+ type: identifier
+
+var2:
+ description: a variable
+ default:
+ variable: _.dyn_val1.var
+ optional: true
+ mandatory: false
diff --git a/tests/results/60_6family_dynamic_inside/rougail/00-base.yml b/tests/results/60_6family_dynamic_inside/rougail/00-base.yml
new file mode 100644
index 0000000..2cffd93
--- /dev/null
+++ b/tests/results/60_6family_dynamic_inside/rougail/00-base.yml
@@ -0,0 +1,31 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+'{{ identifier }}_dyn':
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var1:
+ description: value is suffix
+ default:
+ type: identifier
+
+ var2:
+ description: value is first variable
+ default:
+ variable: _.var1
+
+ var3:
+ description: value is relative first variable
+ default:
+ variable: _.var1
+
+ var4:
+ description: value is first variable of val1
+ default:
+ variable: __.val1_dyn.var1
diff --git a/tests/results/60_6family_dynamic_inside_empty/rougail/00-base.yml b/tests/results/60_6family_dynamic_inside_empty/rougail/00-base.yml
new file mode 100644
index 0000000..d4bf24f
--- /dev/null
+++ b/tests/results/60_6family_dynamic_inside_empty/rougail/00-base.yml
@@ -0,0 +1,35 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+'{{ identifier }}_dyn':
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ var1:
+ description: value is suffix
+ default:
+ type: identifier
+
+ var2:
+ description: value is first variable
+ default:
+ variable: _.var1
+
+ var3:
+ description: value is relative first variable
+ default:
+ variable: _.var1
+
+ var4:
+ description: value is first variable of val1
+ default:
+ variable: __.val1_dyn.var1
diff --git a/tests/results/60_6family_dynamic_leadership/rougail/00-base.yml b/tests/results/60_6family_dynamic_leadership/rougail/00-base.yml
new file mode 100644
index 0000000..60232a0
--- /dev/null
+++ b/tests/results/60_6family_dynamic_leadership/rougail/00-base.yml
@@ -0,0 +1,27 @@
+---
+version: 1.1
+
+var: # a suffix variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ leadership:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+
+ follower1:
+ description: a follower1
+ mandatory: false
+
+ follower2:
+ description: a follower2
+ mandatory: false
diff --git a/tests/results/60_6family_dynamic_leadership_empty/rougail/00-base.yml b/tests/results/60_6family_dynamic_leadership_empty/rougail/00-base.yml
new file mode 100644
index 0000000..9587f3b
--- /dev/null
+++ b/tests/results/60_6family_dynamic_leadership_empty/rougail/00-base.yml
@@ -0,0 +1,31 @@
+---
+version: 1.1
+
+var:
+ description: a suffix variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ variable: _.var
+
+ leadership:
+ description: a leadership
+ type: leadership
+
+ leader:
+ description: a leader
+ multi: true
+
+ follower1:
+ description: a follower1
+ mandatory: false
+
+ follower2:
+ description: a follower2
+ mandatory: false
diff --git a/tests/results/60_6family_dynamic_sub_dynamic/rougail/00-base.yml b/tests/results/60_6family_dynamic_sub_dynamic/rougail/00-base.yml
new file mode 100644
index 0000000..fe6e0fa
--- /dev/null
+++ b/tests/results/60_6family_dynamic_sub_dynamic/rougail/00-base.yml
@@ -0,0 +1,48 @@
+---
+version: 1.1
+
+var: # A identifier variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A dynamic variable
+ multi: true
+ default:
+ jinja: |-
+ {% for val in __.var %}
+ t{{ val }}
+ {% endfor %}
+ description: add 't' to each var value
+
+ dyn_{{ identifier }}:
+ description: a Second dynamic variable
+ dynamic:
+ variable: __.dyn{{ identifier }}.var
+
+ var:
+ description: A variable dynamic
+ default:
+ type: identifier
+
+ var_identifier:
+ description: identifier from first family
+ default:
+ identifier: 0
+
+ var_identifiers:
+ description: merge identifiers
+ default:
+ jinja: >-
+ {{ s1 }}-{{ s2 }}
+ description: join identifier 1 et identifier 2
+ params:
+ s1:
+ identifier: 0
+ s2:
+ identifier: 1
diff --git a/tests/results/60_6family_dynamic_sub_dynamic_1_0/rougail/00-base.yml b/tests/results/60_6family_dynamic_sub_dynamic_1_0/rougail/00-base.yml
new file mode 100644
index 0000000..1b03386
--- /dev/null
+++ b/tests/results/60_6family_dynamic_sub_dynamic_1_0/rougail/00-base.yml
@@ -0,0 +1,50 @@
+---
+version: 1.1
+
+var: # A identifier variable
+ - val1
+ - val2
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ var:
+ description: A dynamic variable
+ multi: true
+ default:
+ jinja: |-
+ {% for val in rougail.var %}
+ t{{ val }}
+ {% endfor %}
+ description: add 't' to each var value
+
+ dyn_{{ identifier }}:
+ description: a Second dynamic variable
+ dynamic:
+ variable: _.var
+ propertyerror: false
+
+ var:
+ description: A variable dynamic
+ default:
+ type: identifier
+
+ var_identifier:
+ description: identifier from first family
+ default:
+ identifier: 0
+
+ var_identifiers:
+ description: merge identifiers
+ default:
+ jinja: >-
+ {{ s1 }}-{{ s2 }}
+ description: join identifier 1 et identifier 2
+ params:
+ s1:
+ identifier: 0
+ s2:
+ identifier: 1
diff --git a/tests/results/60_6family_dynamic_sub_dynamic_empty/rougail/00-base.yml b/tests/results/60_6family_dynamic_sub_dynamic_empty/rougail/00-base.yml
new file mode 100644
index 0000000..d019953
--- /dev/null
+++ b/tests/results/60_6family_dynamic_sub_dynamic_empty/rougail/00-base.yml
@@ -0,0 +1,52 @@
+---
+version: 1.1
+
+var:
+ description: A identifier variable
+ test:
+ - val1
+ - val2
+ multi: true
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A dynamic variable
+ multi: true
+ default:
+ jinja: |-
+ {% for val in __.var %}
+ t{{ val }}
+ {% endfor %}
+ description: add 't' to each var value
+
+ dyn_{{ identifier }}:
+ description: a Second dynamic variable
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A variable dynamic
+ default:
+ type: identifier
+
+ var_identifier:
+ description: identifier from first family
+ default:
+ identifier: 0
+
+ var_identifiers:
+ description: merge identifiers
+ default:
+ jinja: >-
+ {{ s1 }}-{{ s2 }}
+ description: join identifier 1 et identifier 2
+ params:
+ s1:
+ identifier: 0
+ s2:
+ identifier: 1
diff --git a/tests/results/60_6family_dynamic_sub_dynamic_empty2/rougail/00-base.yml b/tests/results/60_6family_dynamic_sub_dynamic_empty2/rougail/00-base.yml
new file mode 100644
index 0000000..2186117
--- /dev/null
+++ b/tests/results/60_6family_dynamic_sub_dynamic_empty2/rougail/00-base.yml
@@ -0,0 +1,46 @@
+---
+version: 1.1
+
+var:
+ description: A identifier variable
+ default:
+ - val1
+ - val2
+ mandatory: false
+
+dyn{{ identifier }}:
+ description: A dynamic family
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A dynamic variable
+ multi: true
+ mandatory: false
+
+ dyn_{{ identifier }}:
+ description: a Second dynamic variable
+ dynamic:
+ variable: _.var
+
+ var:
+ description: A variable dynamic
+ default:
+ type: identifier
+
+ var_identifier:
+ description: identifier from first family
+ default:
+ identifier: 0
+
+ var_identifiers:
+ description: merge identifiers
+ default:
+ jinja: >-
+ {{ s1 }}-{{ s2 }}
+ description: join identifier 1 et identifier 2
+ params:
+ s1:
+ identifier: 0
+ s2:
+ identifier: 1
diff --git a/tests/results/60_9extra_dynamic/extra/00-base.yml b/tests/results/60_9extra_dynamic/extra/00-base.yml
new file mode 100644
index 0000000..468364f
--- /dev/null
+++ b/tests/results/60_9extra_dynamic/extra/00-base.yml
@@ -0,0 +1,8 @@
+---
+version: 1.1
+
+dyn_{{ identifier }}:
+ dynamic:
+ variable: rougail.var
+
+ var:
diff --git a/tests/results/60_9extra_dynamic/rougail/00-base.yml b/tests/results/60_9extra_dynamic/rougail/00-base.yml
new file mode 100644
index 0000000..37b8779
--- /dev/null
+++ b/tests/results/60_9extra_dynamic/rougail/00-base.yml
@@ -0,0 +1,5 @@
+---
+version: 1.1
+
+var: # a variable
+ - a
diff --git a/tests/results/60_9extra_dynamic_extra/extra/00-base.yml b/tests/results/60_9extra_dynamic_extra/extra/00-base.yml
new file mode 100644
index 0000000..fa1aa3a
--- /dev/null
+++ b/tests/results/60_9extra_dynamic_extra/extra/00-base.yml
@@ -0,0 +1,11 @@
+---
+version: 1.1
+
+var: # a varaible
+ - a
+
+dyn_{{ identifier }}:
+ dynamic:
+ variable: _.var
+
+ var:
diff --git a/tests/results/60_9extra_dynamic_extra/rougail/00-base.yml b/tests/results/60_9extra_dynamic_extra/rougail/00-base.yml
new file mode 100644
index 0000000..846a618
--- /dev/null
+++ b/tests/results/60_9extra_dynamic_extra/rougail/00-base.yml
@@ -0,0 +1,7 @@
+---
+version: 1.1
+
+general: # général
+
+ varname: # No change
+ - a
diff --git a/tests/results/60_9family_dynamic_calc_both/rougail/00-base.yml b/tests/results/60_9family_dynamic_calc_both/rougail/00-base.yml
new file mode 100644
index 0000000..27a0713
--- /dev/null
+++ b/tests/results/60_9family_dynamic_calc_both/rougail/00-base.yml
@@ -0,0 +1,12 @@
+---
+version: 1.1
+
+var: val2 # a suffix variable
+
+dyn{{ identifier }}:
+ description: a dynamic family
+ dynamic:
+ - val1
+ - variable: _.var
+
+ vardyn: # a dynamic variable
diff --git a/tests/results/68_0family_leadership_mode/rougail/00-base.yml b/tests/results/68_0family_leadership_mode/rougail/00-base.yml
new file mode 100644
index 0000000..a9851e0
--- /dev/null
+++ b/tests/results/68_0family_leadership_mode/rougail/00-base.yml
@@ -0,0 +1,19 @@
+---
+version: 1.1
+
+leader:
+ description: A leadership
+ type: leadership
+
+ leader:
+ description: A leader
+ multi: true
+ mandatory: false
+
+ follower1:
+ description: a follower1
+ mandatory: false
+
+ follower2:
+ description: a follower2
+ mode: basic
diff --git a/tests/test_load.py b/tests/test_load.py
new file mode 100644
index 0000000..fddfb70
--- /dev/null
+++ b/tests/test_load.py
@@ -0,0 +1,101 @@
+from pytest import fixture # , raises
+from pathlib import Path
+from rougail import Rougail
+from rougail.output_formatter import RougailOutputFormatter as RougailOutput
+
+from rougail_tests.utils import get_structures_list, get_rougail_config, config_to_dict
+
+
+excludes = [
+# "24_0family_hidden_condition_sub_family",
+ ]
+
+test_ok = get_structures_list(excludes)
+# test_ok = [Path('../rougail-tests/structures/20_9family_absolute')]
+
+
+def idfn(fixture_value):
+ return fixture_value.name
+
+
+@fixture(scope="module", params=test_ok, ids=idfn)
+def test_dir(request):
+ return request.param
+
+
+def get_output_director(namespace):
+ return Path(__file__).parent / 'results'
+
+
+def _test_structural_files(file_name, namespace, rougailconfig):
+ ##################################
+ rougailconfig['step.output'] = 'formatter'
+ ##################################
+ config = None
+ generated_output = RougailOutput(config, rougailconfig=rougailconfig).run()
+ output_file = get_output_director(namespace) / file_name.parent.parent.name / file_name.parent.name / file_name.name
+ if not output_file.is_file():
+ if not output_file.parent.is_dir():
+ output_file.parent.mkdir(parents=True)
+ output_file.write_text(file_name.read_text())
+# with output_file.open('w') as fh:
+# print('===', generated_output)
+# fh.write(generated_output)
+ with output_file.open() as outfh:
+ attented_output = outfh.read()
+ assert generated_output == attented_output, f'filename {output_file}'
+
+
+def test_structural_files_formatter(test_dir):
+ namespace = False
+ rougailconfig = get_rougail_config(test_dir, namespace)
+ if not rougailconfig:
+ return
+ dirs = rougailconfig['main_dictionaries']
+ for dir_name in dirs:
+ for file_name in Path(dir_name).iterdir():
+ if file_name.suffix in [".yml", ".yaml"]:
+ rougailconfig["main_dictionaries"] = [str(file_name)]
+ _test_structural_files(file_name, namespace, rougailconfig)
+
+
+def test_structural_files_formatter_namespace(test_dir):
+ namespace = True
+ rougailconfig = get_rougail_config(test_dir, namespace)
+ if not rougailconfig:
+ return
+ for dir_name in rougailconfig['main_dictionaries']:
+ for file_name in Path(dir_name).iterdir():
+ if file_name.suffix in [".yml", ".yaml"]:
+ rougailconfig["main_dictionaries"] = [str(file_name)]
+ _test_structural_files(file_name, namespace, rougailconfig)
+ for namespace, dirs_name in rougailconfig['extra_dictionaries'].items():
+ rougailconfig["main_namespace"] = namespace
+ for dir_name in dirs_name:
+ for file_name in Path(dir_name).iterdir():
+ if file_name.suffix in [".yml", ".yaml"]:
+ rougailconfig["main_dictionaries"] = [str(file_name)]
+ _test_structural_files(file_name, namespace, rougailconfig)
+
+
+def test_structural_files_formatter_load(test_dir):
+ namespace = True
+ rougailconfig = get_rougail_config(test_dir, namespace)
+ if not rougailconfig:
+ return
+ output_director = get_output_director(namespace) / test_dir.name
+ if not output_director.is_dir():
+ return
+ rougail = Rougail(rougailconfig)
+ config = rougail.run()
+ before_config_dict = dict(config_to_dict(config.value.get()))
+ #
+ rougailconfig['main_dictionaries'] = [str(output_director / Path(dirpath).name) for dirpath in rougailconfig["main_dictionaries"]]
+ extra_dictionaries = {}
+ for ns, dirpaths in rougailconfig['extra_dictionaries'].items():
+ extra_dictionaries[ns] = [str(output_director / Path(dirpath).name) for dirpath in dirpaths]
+ rougailconfig['extra_dictionaries'] = extra_dictionaries
+ rougail = Rougail(rougailconfig)
+ config = rougail.run()
+ after_config_dict = dict(config_to_dict(config.value.get()))
+ assert before_config_dict == after_config_dict, f'directory {test_dir}'