WIP: Expand the developer documentation #27
3 changed files with 65 additions and 43 deletions
|
@ -5,7 +5,7 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\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}"
|
msgid "the variable \"{0}\" has an unvalid default value \"{1}\" should be in {2}"
|
||||||
msgstr ""
|
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"
|
msgid "A variable or a family located in the \"{0}\" namespace shall not be used in the \"{1}\" namespace"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/rougail/convert.py:459
|
#: src/rougail/convert.py:475
|
||||||
msgid "unknown type {0} for {1}"
|
msgid "unknown type {0} for {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/rougail/convert.py:1324
|
#: src/rougail/convert.py:1345
|
||||||
msgid "duplicate dictionary file name {0}"
|
msgid "duplicate dictionary file name {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/rougail/convert.py:1371
|
#: src/rougail/convert.py:1392
|
||||||
msgid "Cannot execute annotate multiple time"
|
msgid "Cannot execute annotate multiple time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -162,45 +162,61 @@ class Paths:
|
||||||
path = get_realpath(path, identifier_path)
|
path = get_realpath(path, identifier_path)
|
||||||
dynamic = None
|
dynamic = None
|
||||||
# version 1.0
|
# version 1.0
|
||||||
if (
|
if version == "1.0":
|
||||||
version == "1.0"
|
if not path in self._data and "{{ suffix }}" not in path:
|
||||||
and not path in self._data
|
new_path = None
|
||||||
and "{{ identifier }}" not in path
|
current_path = None
|
||||||
):
|
identifiers = []
|
||||||
new_path = None
|
for name in path.split("."):
|
||||||
current_path = None
|
parent_path = current_path
|
||||||
for name in path.split("."):
|
if current_path:
|
||||||
parent_path = current_path
|
current_path += "." + name
|
||||||
if current_path:
|
|
||||||
current_path += "." + name
|
|
||||||
else:
|
|
||||||
current_path = name
|
|
||||||
if current_path in self._data:
|
|
||||||
if new_path:
|
|
||||||
new_path += "." + name
|
|
||||||
else:
|
else:
|
||||||
new_path = name
|
current_path = name
|
||||||
continue
|
if current_path in self._data:
|
||||||
for dynamic_path in self._dynamics:
|
if new_path:
|
||||||
if "." in dynamic_path:
|
new_path += "." + name
|
||||||
parent_dynamic, name_dynamic = dynamic_path.rsplit(".", 1)
|
else:
|
||||||
else:
|
new_path = name
|
||||||
parent_dynamic = None
|
continue
|
||||||
name_dynamic = dynamic_path
|
for dynamic_path in self._dynamics:
|
||||||
if (
|
if "." in dynamic_path:
|
||||||
parent_dynamic == parent_path
|
parent_dynamic, name_dynamic = dynamic_path.rsplit(".", 1)
|
||||||
and name_dynamic.endswith("{{ identifier }}")
|
else:
|
||||||
and name == name_dynamic.replace("{{ identifier }}", "")
|
parent_dynamic = None
|
||||||
):
|
name_dynamic = dynamic_path
|
||||||
new_path += "." + name_dynamic
|
if (
|
||||||
|
parent_dynamic == parent_path
|
||||||
|
and name_dynamic.endswith("{{ identifier }}")
|
||||||
|
and name == name_dynamic.replace("{{ identifier }}", "")
|
||||||
|
):
|
||||||
|
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
|
break
|
||||||
else:
|
|
||||||
if new_path:
|
|
||||||
new_path += "." + name
|
|
||||||
else:
|
else:
|
||||||
new_path = name
|
if new_path:
|
||||||
path = new_path
|
new_path += "." + name
|
||||||
if version != "1.0" and not path in self._data:
|
else:
|
||||||
|
new_path = name
|
||||||
|
path = new_path
|
||||||
|
else:
|
||||||
|
identifiers = None
|
||||||
|
if "{{ suffix }}" in path:
|
||||||
|
path = path.replace("{{ suffix }}", "{{ identifier }}")
|
||||||
|
elif not path in self._data:
|
||||||
current_path = None
|
current_path = None
|
||||||
parent_path = None
|
parent_path = None
|
||||||
new_path = current_path
|
new_path = current_path
|
||||||
|
@ -632,14 +648,17 @@ class ParserVariable:
|
||||||
family_obj["type"] = obj_type = "dynamic"
|
family_obj["type"] = obj_type = "dynamic"
|
||||||
if obj_type == "dynamic":
|
if obj_type == "dynamic":
|
||||||
family_is_dynamic = True
|
family_is_dynamic = True
|
||||||
parent_dynamic = path
|
|
||||||
if "{{ identifier }}" not in name:
|
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 }}"
|
name += "{{ identifier }}"
|
||||||
path += "{{ identifier }}"
|
path += "{{ identifier }}"
|
||||||
else:
|
else:
|
||||||
msg = f'dynamic family name must have "{{{{ identifier }}}}" in his name for "{path}"'
|
msg = f'dynamic family name must have "{{{{ identifier }}}}" in his name for "{path}"'
|
||||||
raise DictConsistencyError(msg, 13, [filename])
|
raise DictConsistencyError(msg, 13, [filename])
|
||||||
|
parent_dynamic = path
|
||||||
if version != "1.0" and not family_obj and comment:
|
if version != "1.0" and not family_obj and comment:
|
||||||
family_obj["description"] = comment
|
family_obj["description"] = comment
|
||||||
self.add_family(
|
self.add_family(
|
||||||
|
@ -1099,6 +1118,8 @@ class ParserVariable:
|
||||||
"type": "any",
|
"type": "any",
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
|
if version == "1.0" and val["type"] == "suffix":
|
||||||
|
val["type"] = "identifier"
|
||||||
param_typ = val["type"]
|
param_typ = val["type"]
|
||||||
val["key"] = key
|
val["key"] = key
|
||||||
val["path"] = path
|
val["path"] = path
|
||||||
|
|
|
@ -687,6 +687,7 @@ CALCULATION_TYPES = {
|
||||||
"variable": VariableCalculation,
|
"variable": VariableCalculation,
|
||||||
"information": InformationCalculation,
|
"information": InformationCalculation,
|
||||||
"identifier": IdentifierCalculation,
|
"identifier": IdentifierCalculation,
|
||||||
|
"suffix": IdentifierCalculation,
|
||||||
"index": IndexCalculation,
|
"index": IndexCalculation,
|
||||||
}
|
}
|
||||||
CALCULATION_PROPERTY_TYPES = {
|
CALCULATION_PROPERTY_TYPES = {
|
||||||
|
|
Loading…
Reference in a new issue