fix(36): format 1.0: suffix attribut must works #37

Merged
gnunux merged 1 commit from 36_format_1.0 into develop 2024-11-05 08:29:42 +01:00
3 changed files with 65 additions and 43 deletions

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2024-11-01 11:05+0100\n"
"POT-Creation-Date: 2024-11-04 12:04+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -67,19 +67,19 @@ msgstr ""
msgid "the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}"
msgstr ""
#: src/rougail/convert.py:265
#: src/rougail/convert.py:281
msgid "A variable or a family located in the \"{0}\" namespace shall not be used in the \"{1}\" namespace"
msgstr ""
#: src/rougail/convert.py:459
#: src/rougail/convert.py:475
msgid "unknown type {0} for {1}"
msgstr ""
#: src/rougail/convert.py:1324
#: src/rougail/convert.py:1345
msgid "duplicate dictionary file name {0}"
msgstr ""
#: src/rougail/convert.py:1371
#: src/rougail/convert.py:1392
msgid "Cannot execute annotate multiple time"
msgstr ""

View file

@ -162,13 +162,11 @@ class Paths:
path = get_realpath(path, identifier_path)
dynamic = None
# version 1.0
if (
version == "1.0"
and not path in self._data
and "{{ identifier }}" not in path
):
if version == "1.0":
if not path in self._data and "{{ suffix }}" not in path:
new_path = None
current_path = None
identifiers = []
for name in path.split("."):
parent_path = current_path
if current_path:
@ -194,13 +192,31 @@ class Paths:
):
new_path += "." + name_dynamic
break
regexp = "^" + name_dynamic.replace("{{ identifier }}", "(.*)")
finded = findall(regexp, name)
if len(finded) != 1 or not finded[0]:
continue
if finded[0] == "{{ identifier }}":
identifiers.append(None)
else:
identifiers.append(finded[0])
if new_path is None:
new_path = name_dynamic
else:
new_path += "." + name_dynamic
parent_path = dynamic_path
break
else:
if new_path:
new_path += "." + name
else:
new_path = name
path = new_path
if version != "1.0" and not path in self._data:
else:
identifiers = None
if "{{ suffix }}" in path:
path = path.replace("{{ suffix }}", "{{ identifier }}")
elif not path in self._data:
current_path = None
parent_path = None
new_path = current_path
@ -632,14 +648,17 @@ class ParserVariable:
family_obj["type"] = obj_type = "dynamic"
if obj_type == "dynamic":
family_is_dynamic = True
parent_dynamic = path
if "{{ identifier }}" not in name:
if "variable" in family_obj:
if version == "1.0" and "{{ suffix }}" in name:
name = name.replace("{{ suffix }}", "{{ identifier }}")
path = path.replace("{{ suffix }}", "{{ identifier }}")
elif "variable" in family_obj:
name += "{{ identifier }}"
path += "{{ identifier }}"
else:
msg = f'dynamic family name must have "{{{{ identifier }}}}" in his name for "{path}"'
raise DictConsistencyError(msg, 13, [filename])
parent_dynamic = path
if version != "1.0" and not family_obj and comment:
family_obj["description"] = comment
self.add_family(
@ -1099,6 +1118,8 @@ class ParserVariable:
"type": "any",
}
else:
if version == "1.0" and val["type"] == "suffix":
val["type"] = "identifier"
param_typ = val["type"]
val["key"] = key
val["path"] = path

View file

@ -687,6 +687,7 @@ CALCULATION_TYPES = {
"variable": VariableCalculation,
"information": InformationCalculation,
"identifier": IdentifierCalculation,
"suffix": IdentifierCalculation,
"index": IndexCalculation,
}
CALCULATION_PROPERTY_TYPES = {