metanorma-plugin-lutaml 0.4.2 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +312 -10
- data/lib/metanorma-plugin-lutaml.rb +3 -0
- data/lib/metanorma/plugin/lutaml/liquid/multiply_local_file_system.rb +53 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_diagrams_block.liquid +11 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages.liquid +133 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_class.liquid +81 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary.liquid +177 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_classes.liquid +43 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_type.liquid +63 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_entity_list.liquid +113 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_enum.liquid +63 -0
- data/lib/metanorma/plugin/lutaml/lutaml_diagram_base.rb +81 -0
- data/lib/metanorma/plugin/lutaml/lutaml_diagram_block.rb +5 -60
- data/lib/metanorma/plugin/lutaml/lutaml_diagram_block_macro.rb +20 -0
- data/lib/metanorma/plugin/lutaml/lutaml_figure_inline_macro.rb +23 -0
- data/lib/metanorma/plugin/lutaml/lutaml_uml_attributes_table_preprocessor.rb +11 -10
- data/lib/metanorma/plugin/lutaml/lutaml_uml_datamodel_description_preprocessor.rb +188 -0
- data/lib/metanorma/plugin/lutaml/utils.rb +4 -2
- data/lib/metanorma/plugin/lutaml/version.rb +1 -1
- metadata +15 -2
@@ -0,0 +1,133 @@
|
|
1
|
+
{% for package in context.packages %}
|
2
|
+
{% assign package_name = package.name | downcase | replace: ":", "" | replace: " ", "_" %}
|
3
|
+
{% if additional_context.before and additional_context.before.size > 0 %}
|
4
|
+
{% for before in additional_context.before %}
|
5
|
+
{{ before.text }}
|
6
|
+
{% endfor %}
|
7
|
+
{% endif %}
|
8
|
+
{% assign is_package_spare = package.name | slice: 0,5 %}
|
9
|
+
{% if is_package_spare == 'old: ' %}{% continue %}
|
10
|
+
{% elsif is_package_spare == 'Spare' %}{% continue %}
|
11
|
+
{% endif %}
|
12
|
+
|
13
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}{{equalsigns}} {{ package.name }} package
|
14
|
+
{{equalsigns}}= {{ package.name }} overview
|
15
|
+
|
16
|
+
{% assign before_package_key = 'before;' | append: package.name %}
|
17
|
+
{% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
|
18
|
+
{% for before in additional_context[before_package_key] %}
|
19
|
+
{{ before.text }}
|
20
|
+
{% endfor %}
|
21
|
+
{% endif %}
|
22
|
+
{% if additional_context.diagram_include_block %}
|
23
|
+
{% for diagram_include_block in additional_context.diagram_include_block %}
|
24
|
+
{% include "diagrams_block", package_name: package_name, image_base_path: diagram_include_block.base_path, text: diagram_include_block.text %}
|
25
|
+
{% endfor %}
|
26
|
+
{% endif %}
|
27
|
+
|
28
|
+
{% if package.packages.size > 0 %}The {{ package.name }} package is organized into
|
29
|
+
{{ package.packages.size }} packages{% assign modules_nested_size = 0 %}{% for module in package.packages %}{% assign modules_nested_size = modules_nested_size | plus: module.packages.size %}{% endfor %}{% if modules_nested_size > 0 %} with {{modules_nested_size}} modules{% endif %}:
|
30
|
+
{% endif %}
|
31
|
+
[arabic]
|
32
|
+
{% for module in package.packages %}
|
33
|
+
{% if module.packages.length > 0 %}
|
34
|
+
. {{ module.name }} package comprises:
|
35
|
+
{% for nested_module in module.packages %}
|
36
|
+
.. {{nested_module.name}} module
|
37
|
+
{% endfor %}
|
38
|
+
{% else %}
|
39
|
+
. {{ module.name }} package
|
40
|
+
{% endif %}
|
41
|
+
{% endfor %}
|
42
|
+
|
43
|
+
{% if package.classes.size > 0 or package.enums.size > 0 or package.data_types.size > 0 %}
|
44
|
+
|
45
|
+
{{equalsigns}}= Defining tables
|
46
|
+
|
47
|
+
[arabic]
|
48
|
+
{% for klass in package.classes %}
|
49
|
+
{% assign is_klass_spare = klass.name | slice: 0,5 %}
|
50
|
+
{% if is_klass_spare == 'old: ' %}{% continue %}
|
51
|
+
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
52
|
+
{% endif %}
|
53
|
+
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
54
|
+
.<<tab-P-{{ package_name }}-C-{{ klass_name }}>> -- Elements of {{ package.name }}::{{ klass.name }}
|
55
|
+
|
56
|
+
{% endfor %}
|
57
|
+
{% for enum in package.enums %}
|
58
|
+
{% assign is_enum_spare = enum.name | slice: 0,5 %}
|
59
|
+
{% if is_enum_spare == 'old: ' %}{% continue %}
|
60
|
+
{% elsif is_enum_spare == 'Spare' %}{% continue %}
|
61
|
+
{% endif %}
|
62
|
+
{% assign enum_name = enum.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
63
|
+
.<<tab-P-{{ package_name }}-E-{{ enum_name }}>> -- Elements of {{ package.name }}::{{ enum.name }}
|
64
|
+
|
65
|
+
{% endfor %}
|
66
|
+
{% for data_type in package.data_types %}
|
67
|
+
{% assign is_data_type_spare = data_type.name | slice: 0,5 %}
|
68
|
+
{% if is_data_type_spare == 'old: ' %}{% continue %}
|
69
|
+
{% elsif is_data_type_spare == 'Spare' %}{% continue %}
|
70
|
+
{% endif %}
|
71
|
+
{% assign data_type_name = data_type.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
72
|
+
.<<tab-P-{{ package_name }}-DT-{{ data_type_name }}>> -- Elements of {{ package.name }}::{{ data_type.name }}
|
73
|
+
|
74
|
+
{% endfor %}
|
75
|
+
|
76
|
+
{% for klass in package.classes %}
|
77
|
+
{% include "packages_class" %}
|
78
|
+
{% endfor %}
|
79
|
+
|
80
|
+
{% for klass in package.enums %}
|
81
|
+
{% include "packages_enum" %}
|
82
|
+
{% endfor %}
|
83
|
+
|
84
|
+
{% for klass in package.data_types %}
|
85
|
+
{% include "packages_data_type" %}
|
86
|
+
{% endfor %}
|
87
|
+
|
88
|
+
{% endif %}
|
89
|
+
|
90
|
+
{% if additional_context.include_block and additional_context.include_block.size > 0 %}
|
91
|
+
{% for block in additional_context.include_block %}
|
92
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
93
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
94
|
+
{% unless block_content contains "Liquid error" %}
|
95
|
+
{% if block.text %}
|
96
|
+
{{ block.text }}
|
97
|
+
{% endif %}
|
98
|
+
{{ block_content }}
|
99
|
+
{% endunless %}
|
100
|
+
{% endfor %}
|
101
|
+
{% endif %}
|
102
|
+
|
103
|
+
{% assign include_block_package_key = 'include_block;' | append: package.name %}
|
104
|
+
{% if additional_context[include_block_package_key] and additional_context[include_block_package_key].size > 0 %}
|
105
|
+
{% for block in additional_context[include_block_package_key] %}
|
106
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
107
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
108
|
+
{% unless block_content contains "Liquid error" %}
|
109
|
+
{% if block.text %}
|
110
|
+
{{ block.text }}
|
111
|
+
{% endif %}
|
112
|
+
{{ block_content }}
|
113
|
+
{% endunless %}
|
114
|
+
{% endfor %}
|
115
|
+
{% endif %}
|
116
|
+
|
117
|
+
{% assign after_package_key = 'after;' | append: package.name %}
|
118
|
+
{% if additional_context[after_package_key] %}
|
119
|
+
{{equalsigns}}= Additional Information
|
120
|
+
{% for after in additional_context[after_package_key] %}
|
121
|
+
{{ after.text }}
|
122
|
+
{% endfor %}
|
123
|
+
{% endif %}
|
124
|
+
{% if package.packages.size > 0 and render_nested_packages %}
|
125
|
+
{% assign nested_depth = depth | plus: 1 %}{% include "packages", depth: nested_depth, context: package %}
|
126
|
+
{% endif %}
|
127
|
+
{% endfor %}
|
128
|
+
|
129
|
+
{% if additional_context.after and additional_context.after.size > 0 %}
|
130
|
+
{% for after in additional_context.after %}
|
131
|
+
{{ after.text }}
|
132
|
+
{% endfor %}
|
133
|
+
{% endif %}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
{% assign is_klass_spare = klass.name | slice: 0,5 %}
|
2
|
+
{% if is_klass_spare == 'old: ' %}{% continue %}
|
3
|
+
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
4
|
+
{% endif %}
|
5
|
+
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
6
|
+
[[tab-P-{{ package_name }}-C-{{ klass_name }}]]
|
7
|
+
.Elements of {{ package.name }}::{{ klass.name }}
|
8
|
+
[width="100%",cols="a,a,a,a,a,a,a,a"]
|
9
|
+
|===
|
10
|
+
|
11
|
+
h|Name: 7+| {{ klass.name }}
|
12
|
+
|
13
|
+
h|Definition: 7+| {{ klass.definition | html2adoc }}
|
14
|
+
|
15
|
+
h|Stereotype: 7+| {{ klass.stereotype | default: 'interface' }}
|
16
|
+
|
17
|
+
{% assign inherited = klass.associations | where: "member_end_type", "inheritance" %}
|
18
|
+
{% if inherited.size > 0 %}
|
19
|
+
h|Inheritance from: 7+| {{ inherited | map: 'member_end' | join: ", " }}
|
20
|
+
{% endif %}
|
21
|
+
|
22
|
+
{% assign generalizations = klass.associations | where: "member_end_type", "generalization" %}
|
23
|
+
{% if generalizations.size > 0 %}
|
24
|
+
h|Generalization of: 7+| {{ generalizations | map: 'member_end' | join: ", " }}
|
25
|
+
{% endif %}
|
26
|
+
|
27
|
+
h|Abstract: 7+| {{ klass.is_abstract }}
|
28
|
+
{% assign aggregations = klass.associations | where: "member_end_type", "aggregation" %}
|
29
|
+
{% if aggregations.size > 0 %}
|
30
|
+
.{{aggregations.size | plus: 1}}+h|Associations:
|
31
|
+
4+|_Association with:_
|
32
|
+
|_Obligation_
|
33
|
+
| _Maximum occurrence_
|
34
|
+
|_Provides:_
|
35
|
+
|
36
|
+
{% for assoc in aggregations %}
|
37
|
+
4+| {{assoc.member_end}}
|
38
|
+
| {% if assoc.member_end_cardinality %}{{ assoc.member_end_cardinality.min }}{% endif %}
|
39
|
+
| {% if assoc.member_end_cardinality %}{{ assoc.member_end_cardinality.max }}{% endif %}
|
40
|
+
| {{ assoc.member_end_attribute_name }}
|
41
|
+
|
42
|
+
{% endfor %}
|
43
|
+
{% else %}
|
44
|
+
|
45
|
+
.1+h|Associations: 7+| (none)
|
46
|
+
{% endif %}
|
47
|
+
{% if klass.attributes.size > 0 %}
|
48
|
+
.{{klass.attributes.size | plus: 1}}+h|Public attributes:
|
49
|
+
| _Name_
|
50
|
+
2+| _Definition_
|
51
|
+
| _Derived_
|
52
|
+
| _Obligation_
|
53
|
+
| _Maximum occurrence_
|
54
|
+
| _Data type_
|
55
|
+
|
56
|
+
{% for attr in klass.attributes %}
|
57
|
+
| {{attr.name}}
|
58
|
+
2+| {{ attr.definition | html2adoc }}
|
59
|
+
| {{ attr.is_derived }}
|
60
|
+
| {{attr.cardinality.min}}
|
61
|
+
| {{attr.cardinality.max}}
|
62
|
+
| {{attr.type}}
|
63
|
+
|
64
|
+
{% endfor %}
|
65
|
+
{% else %}
|
66
|
+
.1+h|Public attributes:
|
67
|
+
7+| (none)
|
68
|
+
{% endif %}
|
69
|
+
|
70
|
+
{% if klass.constraints.size > 0 %}
|
71
|
+
.{{ klass.constraints.size }}+|*Constraints:*
|
72
|
+
{% for constr in klass.constraints %}
|
73
|
+
7+| `{{ constr.body }}`
|
74
|
+
|
75
|
+
{% endfor %}
|
76
|
+
{% else %}
|
77
|
+
|
78
|
+
h|Constraints: 7+| (none)
|
79
|
+
{% endif %}
|
80
|
+
|
81
|
+
|===
|
@@ -0,0 +1,177 @@
|
|
1
|
+
{% for package in context.packages %}
|
2
|
+
{% assign package_name = package.name | downcase | replace: ":", "" | replace: " ", "_" %}
|
3
|
+
{% if additional_context.before and additional_context.before.size > 0 %}
|
4
|
+
{% for before in additional_context.before %}
|
5
|
+
{{ before.text }}
|
6
|
+
{% endfor %}
|
7
|
+
{% endif %}
|
8
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}{{equalsigns}} {{ package.name }}
|
9
|
+
{{equalsigns}}= {{ package.name }}
|
10
|
+
|
11
|
+
{% assign before_package_key = 'before;' | append: package.name %}
|
12
|
+
{% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
|
13
|
+
{% for before in additional_context[before_package_key] %}
|
14
|
+
{{ before.text }}
|
15
|
+
{% endfor %}
|
16
|
+
{% endif %}
|
17
|
+
|
18
|
+
[cols="1a,4a"]
|
19
|
+
|===
|
20
|
+
|
21
|
+
h|Description: | {{ package.definition }}
|
22
|
+
h|Parent Package: | {{ context.name }}
|
23
|
+
h|Stereotype: | «{{ package.stereotype }}»
|
24
|
+
|
25
|
+
|===
|
26
|
+
|
27
|
+
{% assign feature_types = package.classes | where: "stereotype", "FeatureType" %}
|
28
|
+
{% assign object_types = package.classes | where: "stereotype", "ObjectType" %}
|
29
|
+
{% assign basic_types = package.classes | where: "stereotype", "BasicType" %}
|
30
|
+
{% assign unions = package.classes | where: "stereotype", "Union" %}
|
31
|
+
{% assign code_lists = package.classes | where: "stereotype", "CodeList" %}
|
32
|
+
{% if feature_types.size > 0 or object_types.size > 0 %}
|
33
|
+
{{equalsigns}}= Classes
|
34
|
+
|
35
|
+
{% include "packages_data_dictionary_classes", classes: feature_types %}
|
36
|
+
{% include "packages_data_dictionary_classes", classes: object_types %}
|
37
|
+
{% endif %}
|
38
|
+
|
39
|
+
{% if basic_types.size > 0 %}
|
40
|
+
{{equalsigns}}= Basic Types
|
41
|
+
|
42
|
+
{% include "packages_data_dictionary_classes", classes: basic_types %}
|
43
|
+
{% endif %}
|
44
|
+
|
45
|
+
{% if unions.size > 0 %}
|
46
|
+
{{equalsigns}}= Unions
|
47
|
+
|
48
|
+
{% include "packages_data_dictionary_classes", classes: unions %}
|
49
|
+
{% endif %}
|
50
|
+
|
51
|
+
{% if code_lists.size > 0 %}
|
52
|
+
{{equalsigns}}= Code Lists
|
53
|
+
|
54
|
+
{% include "packages_data_dictionary_classes", classes: code_lists %}
|
55
|
+
{% endif %}
|
56
|
+
|
57
|
+
{% if package.data_types.size > 0 %}
|
58
|
+
{{equalsigns}}= Data Types
|
59
|
+
|
60
|
+
{% for data_type in package.data_types %}
|
61
|
+
{% capture generalizations %}{% for assoc in data_type.associations | where: "member_end_type", "generalization" %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
|
62
|
+
[[{{ data_type.name }}-section]]
|
63
|
+
[cols="1a"]
|
64
|
+
|===
|
65
|
+
|*{{ data_type.name }}*
|
66
|
+
|[cols="1,4",frame=none,grid=none]
|
67
|
+
!===
|
68
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Definition: ! {{ data_type.definition }}
|
69
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Subclass of: ! {{ generalizations }}
|
70
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Stereotype: ! «DataType»
|
71
|
+
!===
|
72
|
+
{% if data_type.associations.size > 0 %}
|
73
|
+
{% capture rendered_associations %}
|
74
|
+
{% for assoc in data_type.associations %}
|
75
|
+
{% if assoc.member_end_attribute_name.size > 0 %}
|
76
|
+
{% capture cardinality %}{% if assoc.member_end_cardinality.min == 'C' %}[0..{{ assoc.member_end_cardinality.max }}]{% elsif assoc.member_end_cardinality.min == 'M' and assoc.member_end_cardinality.max == '1' %}[1..1]{% else %}[{{ assoc.member_end_cardinality.max }}]{% endif %}{% endcapture %}
|
77
|
+
!{set:cellbgcolor:#FFFFFF} {{ assoc.member_end_attribute_name }} !<<{{assoc.member_end}}-section,{{assoc.member_end}}>> {{ cardinality }} ! {{ assoc.definition }}
|
78
|
+
{% endif %}
|
79
|
+
{% endfor %}
|
80
|
+
{% endcapture %}
|
81
|
+
{% if rendered_associations.size > 0 %}
|
82
|
+
|[cols="15,20,60",frame=none,grid=none,options="header"]
|
83
|
+
!===
|
84
|
+
!{set:cellbgcolor:#DDDDDD} *Role name* !*Target class and multiplicity* !*Definition*
|
85
|
+
{{ rendered_associations }}
|
86
|
+
!===
|
87
|
+
{% endif %}
|
88
|
+
{% endif %}
|
89
|
+
{% if data_type.attributes.size > 0 %}
|
90
|
+
|[cols="15,20,60",frame=none,grid=none,options="header"]
|
91
|
+
!===
|
92
|
+
!{set:cellbgcolor:#DDDDDD} *Attribute* !*Value type and multiplicity* !*Definition*
|
93
|
+
{% for attr in data_type.attributes %}
|
94
|
+
{% capture cardinality %}{% if attr.cardinality.min == 'C' %}[0..{{ attr.cardinality.max }}]{% elsif assoc.member_end_cardinality.min == 'M' and assoc.member_end_cardinality.max == '1' %}[1..1]{% else %}[{{ attr.cardinality.max }}]{% endif %}{% endcapture %}
|
95
|
+
!{set:cellbgcolor:#FFFFFF} {{ attr.name }} !<<{{ attr.type }}-section,{{ attr.name }}>> {{ cardinality }} !{{ attr.definition }}
|
96
|
+
{% endfor %}
|
97
|
+
!===
|
98
|
+
|{set:cellbgcolor:#FFFFFF} Note: Unless otherwise specified, all attributes and role names have the stereotype «Property».
|
99
|
+
{% endif %}
|
100
|
+
|===
|
101
|
+
|
102
|
+
{% endfor %}
|
103
|
+
{% endif %}
|
104
|
+
|
105
|
+
{% if package.enums.size > 0 %}
|
106
|
+
{{equalsigns}}= Enumerations
|
107
|
+
|
108
|
+
{% for enum in package.enums %}
|
109
|
+
{% capture generalizations %}{% for assoc in enum.associations | where: "member_end_type", "generalization" %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
|
110
|
+
[[{{ enum.name }}-section]]
|
111
|
+
[cols="1a"]
|
112
|
+
|===
|
113
|
+
|*{{ enum.name }}*
|
114
|
+
|[cols="1,4",frame=none,grid=none]
|
115
|
+
!===
|
116
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Definition: ! {{ enum.definition }}
|
117
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Stereotype: ! «Enumeration»
|
118
|
+
!===
|
119
|
+
{% if enum.values.size > 0 %}
|
120
|
+
|[cols="1,4",frame=none,grid=none,options="header"]
|
121
|
+
!===
|
122
|
+
^!{set:cellbgcolor:#DDDDDD} *Literal value* !*Definition*
|
123
|
+
|
124
|
+
{% for val in enum.values %}
|
125
|
+
^!{set:cellbgcolor:#FFFFFF} {{ val.name }} !{{ val.definition }}
|
126
|
+
{% endfor %}
|
127
|
+
!===
|
128
|
+
{% endif %}
|
129
|
+
|===
|
130
|
+
|
131
|
+
{% endfor %}
|
132
|
+
{% endif %}
|
133
|
+
|
134
|
+
{% if additional_context.include_block and additional_context.include_block.size > 0 %}
|
135
|
+
{% for block in additional_context.include_block %}
|
136
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
137
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
138
|
+
{% unless block_content contains "Liquid error" %}
|
139
|
+
{% if block.text %}
|
140
|
+
{{ block.text }}
|
141
|
+
{% endif %}
|
142
|
+
{{ block_content }}
|
143
|
+
{% endunless %}
|
144
|
+
{% endfor %}
|
145
|
+
{% endif %}
|
146
|
+
|
147
|
+
{% assign include_block_package_key = 'include_block;' | append: package.name %}
|
148
|
+
{% if additional_context[include_block_package_key] and additional_context[include_block_package_key].size > 0 %}
|
149
|
+
{% for block in additional_context[include_block_package_key] %}
|
150
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
151
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
152
|
+
{% unless block_content contains "Liquid error" %}
|
153
|
+
{% if block.text %}
|
154
|
+
{{ block.text }}
|
155
|
+
{% endif %}
|
156
|
+
{{ block_content }}
|
157
|
+
{% endunless %}
|
158
|
+
{% endfor %}
|
159
|
+
{% endif %}
|
160
|
+
|
161
|
+
{% assign after_package_key = 'after;' | append: package.name %}
|
162
|
+
{% if additional_context[after_package_key] %}
|
163
|
+
{{equalsigns}}= Additional Information
|
164
|
+
{% for after in additional_context[after_package_key] %}
|
165
|
+
{{ after.text }}
|
166
|
+
{% endfor %}
|
167
|
+
{% endif %}
|
168
|
+
{% if package.packages.size > 0 and render_nested_packages %}
|
169
|
+
{% assign nested_depth = depth | plus: 1 %}{% include "packages_data_dictionary", depth: nested_depth, context: package %}
|
170
|
+
{% endif %}
|
171
|
+
{% endfor %}
|
172
|
+
|
173
|
+
{% if additional_context.after and additional_context.after.size > 0 %}
|
174
|
+
{% for after in additional_context.after %}
|
175
|
+
{{ after.text }}
|
176
|
+
{% endfor %}
|
177
|
+
{% endif %}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
{% for klass in classes %}
|
2
|
+
{% capture generalizations %}{% for assoc in klass.associations | where: "member_end_type", "generalization" %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
|
3
|
+
[[{{ klass.name }}-section]]
|
4
|
+
[cols="1a"]
|
5
|
+
|===
|
6
|
+
|*{{ klass.name }}*
|
7
|
+
|[cols="1,4",frame=none,grid=none]
|
8
|
+
!===
|
9
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Definition: ! {{ klass.definition }}
|
10
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Subclass of: ! {{ generalizations }}
|
11
|
+
!{nbsp}{nbsp}{nbsp}{nbsp}Stereotype: ! «{{ klass.stereotype }}»
|
12
|
+
!===
|
13
|
+
{% if klass.associations.size > 0 %}
|
14
|
+
{% capture rendered_associations %}
|
15
|
+
{% for assoc in klass.associations %}
|
16
|
+
{% if assoc.member_end_attribute_name.size > 0 %}
|
17
|
+
{% capture cardinality %}{% if assoc.member_end_cardinality.min == 'C' %}[0..{{ assoc.member_end_cardinality.max }}]{% elsif assoc.member_end_cardinality.min == 'M' and assoc.member_end_cardinality.max == '1' %}[1..1]{% else %}[{{ assoc.member_end_cardinality.max }}]{% endif %}{% endcapture %}
|
18
|
+
!{set:cellbgcolor:#FFFFFF} {{ assoc.member_end_attribute_name }} !<<{{assoc.member_end}}-section,{{assoc.member_end}}>> {{ cardinality }} ! {{ assoc.definition }}
|
19
|
+
{% endif %}
|
20
|
+
{% endfor %}
|
21
|
+
{% endcapture %}
|
22
|
+
{% if rendered_associations.size > 0 %}
|
23
|
+
|[cols="15,20,60",frame=none,grid=none,options="header"]
|
24
|
+
!===
|
25
|
+
!{set:cellbgcolor:#DDDDDD} *Role name* !*Target class and multiplicity* !*Definition*
|
26
|
+
{{ rendered_associations }}
|
27
|
+
!===
|
28
|
+
{% endif %}
|
29
|
+
{% endif %}
|
30
|
+
{% if klass.attributes.size > 0 %}
|
31
|
+
|[cols="15,20,60",frame=none,grid=none,options="header"]
|
32
|
+
!===
|
33
|
+
!{set:cellbgcolor:#DDDDDD} *Attribute* !*Value type and multiplicity* !*Definition*
|
34
|
+
{% for attr in klass.attributes %}
|
35
|
+
{% capture cardinality %}{% if attr.cardinality.min == 'C' %}[0..{{ attr.cardinality.max }}]{% elsif assoc.member_end_cardinality.min == 'M' and assoc.member_end_cardinality.max == '1' %}[1..1]{% else %}[{{ attr.cardinality.max }}]{% endif %}{% endcapture %}
|
36
|
+
!{set:cellbgcolor:#FFFFFF} {{ attr.name }} !<<{{ attr.type }}-section,{{ attr.name }}>> {{ cardinality }} !{{ attr.definition }}
|
37
|
+
{% endfor %}
|
38
|
+
!===
|
39
|
+
|{set:cellbgcolor:#FFFFFF} Note: Unless otherwise specified, all attributes and role names have the stereotype «Property».
|
40
|
+
{% endif %}
|
41
|
+
|===
|
42
|
+
|
43
|
+
{% endfor %}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
{% assign is_klass_spare = klass.name | slice: 0,5 %}
|
2
|
+
{% if is_klass_spare == 'old: ' %}{% continue %}
|
3
|
+
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
4
|
+
{% endif %}
|
5
|
+
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
6
|
+
[[tab-P-{{ package_name }}-DT-{{ klass_name }}]]
|
7
|
+
.Elements of {{ package.name }}::{{ klass.name }}
|
8
|
+
[width="100%",cols="a,a,a,a,a,a,a,a"]
|
9
|
+
|===
|
10
|
+
|
11
|
+
h|Name: 7+| {{ klass.name }}
|
12
|
+
|
13
|
+
h|Definition: 7+| {{ klass.definition | html2adoc }}
|
14
|
+
|
15
|
+
h|Stereotype: 7+| {{ klass.stereotype | default: 'interface' }}
|
16
|
+
|
17
|
+
{% assign inherited = klass.associations | where: "member_end_type", "inheritance" %}
|
18
|
+
{% if inherited.size > 0 %}
|
19
|
+
h|Inheritance from: 7+| {{ inherited | map: 'member_end' | join: ", " }}
|
20
|
+
{% endif %}
|
21
|
+
|
22
|
+
{% assign generalizations = klass.associations | where: "member_end_type", "generalization" %}
|
23
|
+
{% if generalizations.size > 0 %}
|
24
|
+
h|Generalization of: 7+| {{ generalizations | map: 'member_end' | join: ", " }}
|
25
|
+
{% endif %}
|
26
|
+
|
27
|
+
h|Abstract: 7+| {{ klass.is_abstract }}
|
28
|
+
{% assign aggregations = klass.associations | where: "member_end_type", "aggregation" %}
|
29
|
+
{% if aggregations.size > 0 %}
|
30
|
+
.{{aggregations.size | plus: 1}}+h|Associations:
|
31
|
+
4+|_Association with:_
|
32
|
+
|_Obligation_
|
33
|
+
| _Maximum occurrence_
|
34
|
+
|_Provides:_
|
35
|
+
|
36
|
+
{% for assoc in aggregations %}
|
37
|
+
4+| {{assoc.member_end}}
|
38
|
+
| {% if assoc.member_end_cardinality %}{{ assoc.member_end_cardinality.min }}{% endif %}
|
39
|
+
| {% if assoc.member_end_cardinality %}{{ assoc.member_end_cardinality.max }}{% endif %}
|
40
|
+
| {{ assoc.member_end_attribute_name }}
|
41
|
+
|
42
|
+
{% endfor %}
|
43
|
+
{% else %}
|
44
|
+
|
45
|
+
.1+h|Associations: 7+| (none)
|
46
|
+
{% endif %}
|
47
|
+
|
48
|
+
{% if klass.attributes.size > 0 %}
|
49
|
+
.{{klass.attributes.size | plus: 1}}+h|Values:
|
50
|
+
| _Name_
|
51
|
+
6+| _Definition_
|
52
|
+
|
53
|
+
{% for value in klass.attributes %}
|
54
|
+
| {{value.name}}
|
55
|
+
6+| {{ value.definition | html2adoc }}
|
56
|
+
|
57
|
+
{% endfor %}
|
58
|
+
{% else %}
|
59
|
+
.1+h|Values:
|
60
|
+
7+| (none)
|
61
|
+
{% endif %}
|
62
|
+
|
63
|
+
|===
|