Model 1C modules as object parts
This commit is contained in:
@@ -1095,9 +1095,15 @@ def _attach_bsl_modules(root: Path, normalized: NormalizedProject) -> None:
|
||||
"original_hash": source.original_hash,
|
||||
"source_text": source.text,
|
||||
"module_role": role,
|
||||
"owner_qualified_name": owner.qualified_name,
|
||||
"owner_kind": owner.object_kind,
|
||||
"object_part": _module_object_part(role, form_name),
|
||||
}
|
||||
if form_name:
|
||||
attributes["form_name"] = form_name
|
||||
form = _find_owner_form(owner, form_name)
|
||||
if form is not None:
|
||||
attributes["form_qualified_name"] = form.qualified_name
|
||||
owner.modules.append(
|
||||
Module(
|
||||
name=source_file.stem,
|
||||
@@ -1189,6 +1195,29 @@ def _module_qualified_name(owner: MetadataObject, role: str, form_name: str, mod
|
||||
return f"{owner.qualified_name}.{role_suffix}"
|
||||
|
||||
|
||||
def _module_object_part(role: str, form_name: str = "") -> str:
|
||||
return {
|
||||
"OBJECT_MODULE": "object.module",
|
||||
"MANAGER_MODULE": "object.manager",
|
||||
"RECORD_SET_MODULE": "object.record_set",
|
||||
"FORM_MODULE": f"form.{form_name}.module" if form_name else "form.module",
|
||||
"MODULE": "module",
|
||||
}.get(role, "module")
|
||||
|
||||
|
||||
def _find_owner_form(owner: MetadataObject, form_name: str) -> Form | None:
|
||||
normalized = form_name.casefold()
|
||||
return next(
|
||||
(
|
||||
form
|
||||
for form in owner.forms
|
||||
if form.name.casefold() == normalized
|
||||
or str(form.qualified_name or "").casefold().endswith(f".{normalized}")
|
||||
),
|
||||
None,
|
||||
)
|
||||
|
||||
|
||||
def _form_name_for_module(root: Path, source_file: Path) -> str:
|
||||
parts = list(_relative_path(source_file, root).parts)
|
||||
normalized_parts = [_normalize_path_part(part) for part in parts]
|
||||
|
||||
Reference in New Issue
Block a user