fix: dictionary => structure

This commit is contained in:
egarette@silique.fr 2025-09-22 14:24:23 +02:00
parent 368f7c2882
commit 264e8f7000
5 changed files with 43 additions and 17 deletions

View file

@ -107,8 +107,8 @@ class RougailOutputFormatter:
)
# yaml.top_level_colon_align = True
self.main_namespace = normalize_family(self.rougailconfig["main_namespace"])
self.has_default_dictionary_format_version = (
self.rougailconfig["default_dictionary_format_version"] is not None
self.has_default_structural_format_version = (
self.rougailconfig["default_structural_format_version"] is not None
)
self.config = Config()
self.config.profile = "jinja"
@ -149,7 +149,7 @@ class RougailOutputFormatter:
return self.attributes[type_name]
def upgrade(self) -> None:
filenames = self.rougailconfig["main_dictionaries"]
filenames = self.rougailconfig["main_structural_directories"]
if len(filenames) > 1:
raise Exception(_("only one file is allowed"))
filename = Path(filenames[0])
@ -203,7 +203,7 @@ class RougailOutputFormatter:
self.families[self.main_namespace].yaml_value_comment_extend(
self.version_name, [CommentToken("\n\n", CommentMark(0)), None]
)
if self.has_default_dictionary_format_version:
if self.has_default_structural_format_version:
del self.families[self.main_namespace][self.version_name]
def parse_family(self, path, obj):

View file

@ -59,7 +59,7 @@ class RougailUpgrade:
format_version = str(root.pop("version"))
else:
version_name = None
format_version = self.rougailconfig["default_dictionary_format_version"]
format_version = self.rougailconfig["default_structural_format_version"]
if format_version not in VERSIONS:
raise Exception(f'version "{format_version}" is not a valid version')
search_function_name = get_function_name(format_version)

View file

@ -0,0 +1,24 @@
%YAML 1.2
---
version: 1.1
leadership:
description: a leadership
type: leadership
leader: # aleader
- a
- b
follower:
description: a follower
default: value
disabled:
jinja: |-
{% if not index %}
the first follower
{% endif %}
params:
index:
type: index
...

View file

@ -21,7 +21,9 @@ dyn{{ identifier }}:
default:
jinja: |-
{% for val in __.var %}
t{{ val }}
{% if val is not none %}
t{{ val }}
{% endif %}
{% endfor %}
description: add 't' to each var value

View file

@ -55,11 +55,11 @@ def test_structural_files_formatter(test_dir):
rougailconfig = get_rougail_config(test_dir, namespace)
if not rougailconfig:
return
dirs = rougailconfig['main_dictionaries']
dirs = rougailconfig['main_structural_directories']
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)]
rougailconfig["main_structural_directories"] = [str(file_name)]
_test_structural_files(file_name, namespace, rougailconfig)
@ -68,17 +68,17 @@ def test_structural_files_formatter_namespace(test_dir):
rougailconfig = get_rougail_config(test_dir, namespace)
if not rougailconfig:
return
for dir_name in rougailconfig['main_dictionaries']:
for dir_name in rougailconfig['main_structural_directories']:
for file_name in Path(dir_name).iterdir():
if file_name.suffix in [".yml", ".yaml"]:
rougailconfig["main_dictionaries"] = [str(file_name)]
rougailconfig["main_structural_directories"] = [str(file_name)]
_test_structural_files(file_name, namespace, rougailconfig)
for namespace, dirs_name in rougailconfig['extra_dictionaries'].items():
for namespace, dirs_name in rougailconfig['extra_namespaces'].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)]
rougailconfig["main_structural_directories"] = [str(file_name)]
_test_structural_files(file_name, namespace, rougailconfig)
@ -94,11 +94,11 @@ def test_structural_files_formatter_load(test_dir):
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
rougailconfig['main_structural_directories'] = [str(output_director / Path(dirpath).name) for dirpath in rougailconfig["main_structural_directories"]]
extra_namespaces = {}
for ns, dirpaths in rougailconfig['extra_namespaces'].items():
extra_namespaces[ns] = [str(output_director / Path(dirpath).name) for dirpath in dirpaths]
rougailconfig['extra_namespaces'] = extra_namespaces
rougail = Rougail(rougailconfig)
config = rougail.run()
after_config_dict = dict(config_to_dict(config.value.get()))