Path:
strictdoc/backend/reqif/sdoc_reqif_fields.py
Lines:
93
Non-empty lines:
70
Non-empty lines covered with requirements:
70 / 70 (100.0%)
Functions:
5
Functions covered by requirements:
5 / 5 (100.0%)
1
"""2
@relation(SDOC-SRS-72, scope=file)3
"""4
5
6
class ReqIFProfile:
7
P01_SDOC = "p01_sdoc"
8
9
ALL = [P01_SDOC]
10
11
12
SDOC_SPEC_OBJECT_TYPE_SINGLETON = "REQUIREMENT_OR_SECTION"
13
14
15
class SDocRequirementReservedField:
16
UID = "UID"
17
TITLE = "TITLE"
18
STATEMENT = "STATEMENT"
19
COMMENT = "COMMENT"
20
CREATED_BY = "CREATED_BY"
21
22
23
class ReqIFReservedField:
24
"""
25
Captures some of the most important field naming conventions by ReqIF.26
"""27
28
UID = "ReqIF.ForeignID"
29
30
# The chapter name appears with elements that represent chapters/sections.31
# The name usually appears with non-section elements.32
CHAPTER_NAME = "ReqIF.ChapterName"
33
NAME = "ReqIF.Name"
34
35
TEXT = "ReqIF.Text"
36
37
CREATED_BY = "ReqIF.ForeignCreatedBy"
38
COMMENT_NOTES = "NOTES"
39
40
41
SDOC_TO_REQIF_FIELD_MAP = {
42
SDocRequirementReservedField.UID: ReqIFReservedField.UID,
43
SDocRequirementReservedField.STATEMENT: ReqIFReservedField.TEXT,
44
SDocRequirementReservedField.COMMENT: ReqIFReservedField.COMMENT_NOTES,
45
SDocRequirementReservedField.CREATED_BY: ReqIFReservedField.CREATED_BY,
46
}47
48
REQIF_MAP_TO_SDOC_FIELD_MAP = {
49
ReqIFReservedField.UID: SDocRequirementReservedField.UID,
50
ReqIFReservedField.NAME: SDocRequirementReservedField.TITLE,
51
ReqIFReservedField.CHAPTER_NAME: SDocRequirementReservedField.TITLE,
52
ReqIFReservedField.TEXT: SDocRequirementReservedField.STATEMENT,
53
ReqIFReservedField.COMMENT_NOTES: SDocRequirementReservedField.COMMENT,
54
ReqIFReservedField.CREATED_BY: SDocRequirementReservedField.CREATED_BY,
55
}56
57
DEFAULT_SDOC_GRAMMAR_FIELDS = [
58
"ReqIF.ForeignID",
59
"LEVEL",
60
"STATUS",
61
"TAGS",
62
"ReqIF.Name",
63
"ReqIF.Text",
64
"RATIONALE",
65
"NOTES",
66
"ReqIF.ChapterName",
67
]68
69
SDOC_SPECIFICATION_TYPE_SINGLETON = "SDOC_SPECIFICATION_TYPE_SINGLETON"
70
71
72
def map_sdoc_field_title_to_reqif_field_title(
73
sdoc_field_title: str, is_composite: bool
74
) -> str:
75
"""
76
Map how SDoc field titles are converted to ReqIF field titles.77
"""78
79
# Assumption: The composite types will most of the type be chapters/sections,80
# so mapping them to ReqIF Chapter Name.81
# If a user requires a more distinct mapping, we would need to introduce82
# a configuration parameter with an explicit map.83
if sdoc_field_title == "TITLE":
84
if is_composite:
85
return ReqIFReservedField.CHAPTER_NAME
86
return ReqIFReservedField.NAME
87
return SDOC_TO_REQIF_FIELD_MAP.get(sdoc_field_title) or sdoc_field_title
88
89
90
def map_reqif_field_title_to_sdoc_field_title(reqif_field_title: str) -> str:
91
return (
92
REQIF_MAP_TO_SDOC_FIELD_MAP.get(reqif_field_title) or reqif_field_title
93
)