metanorma-plugin-lutaml 0.4.7 → 0.4.11
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 +153 -72
- data/lib/metanorma/plugin/lutaml/liquid/custom_filters.rb +9 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages.liquid +112 -6
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_class.liquid +12 -12
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary.liquid +237 -63
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_class.liquid +75 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_classes.liquid +1 -41
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_type.liquid +9 -10
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_entity_list.liquid +118 -49
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_entity_list_class.liquid +19 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_entity_list_classes.liquid +11 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_enum.liquid +11 -11
- data/lib/metanorma/plugin/lutaml/liquid_templates/test.rb +1 -0
- data/lib/metanorma/plugin/lutaml/lutaml_preprocessor.rb +1 -1
- data/lib/metanorma/plugin/lutaml/lutaml_table_inline_macro.rb +25 -0
- data/lib/metanorma/plugin/lutaml/lutaml_uml_attributes_table_preprocessor.rb +1 -1
- data/lib/metanorma/plugin/lutaml/lutaml_uml_datamodel_description_preprocessor.rb +93 -19
- data/lib/metanorma/plugin/lutaml/utils.rb +1 -1
- data/lib/metanorma/plugin/lutaml/version.rb +1 -1
- data/lib/metanorma-plugin-lutaml.rb +1 -0
- metadata +7 -2
@@ -3,8 +3,8 @@
|
|
3
3
|
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
4
4
|
{% endif %}
|
5
5
|
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
6
|
-
[[
|
7
|
-
.Elements of {{ package.name }}::{{ klass.name }}
|
6
|
+
[[section-{{ klass.xmi_id }}]]
|
7
|
+
.Elements of “{{ package.name }}::{{ klass.name }}” ({{ klass.stereotype }})
|
8
8
|
[width="100%",cols="a,a,a,a,a,a,a,a"]
|
9
9
|
|===
|
10
10
|
|
@@ -24,14 +24,14 @@ h|Inheritance from: 7+| {{ inherited | map: 'member_end' | join: ", " }}
|
|
24
24
|
h|Generalization of: 7+| {{ generalizations | map: 'member_end' | join: ", " }}
|
25
25
|
{% endif %}
|
26
26
|
|
27
|
-
h|Abstract: 7+| {
|
27
|
+
h|Abstract: 7+| {% if klass.is_abstract %}True{% else %}False{% endif %}
|
28
28
|
{% assign aggregations = klass.associations | where: "member_end_type", "aggregation" %}
|
29
29
|
{% if aggregations.size > 0 %}
|
30
30
|
.{{aggregations.size | plus: 1}}+h|Associations:
|
31
|
-
4+|_Association
|
32
|
-
|_Obligation_
|
31
|
+
4+| _Association with_
|
32
|
+
| _Obligation_
|
33
33
|
| _Maximum occurrence_
|
34
|
-
|
|
34
|
+
| _Provides_
|
35
35
|
|
36
36
|
{% for assoc in aggregations %}
|
37
37
|
4+| {{assoc.member_end}}
|
@@ -41,9 +41,9 @@ h|Abstract: 7+| {{ klass.is_abstract }}
|
|
41
41
|
|
42
42
|
{% endfor %}
|
43
43
|
{% else %}
|
44
|
-
|
45
|
-
.1+h|Associations: 7+| (none)
|
44
|
+
h| Associations: 7+| (none)
|
46
45
|
{% endif %}
|
46
|
+
|
47
47
|
{% if klass.attributes.size > 0 %}
|
48
48
|
.{{klass.attributes.size | plus: 1}}+h|Public attributes:
|
49
49
|
| _Name_
|
@@ -63,14 +63,14 @@ h|Abstract: 7+| {{ klass.is_abstract }}
|
|
63
63
|
|
64
64
|
{% endfor %}
|
65
65
|
{% else %}
|
66
|
-
|
66
|
+
h| Public attributes:
|
67
67
|
7+| (none)
|
68
68
|
{% endif %}
|
69
69
|
|
70
70
|
{% if klass.constraints.size > 0 %}
|
71
|
-
.{{ klass.constraints.size }}
|
72
|
-
{% for
|
73
|
-
7+| `{{
|
71
|
+
.{{ klass.constraints.size }}+h| Constraints:
|
72
|
+
{% for constraint in klass.constraints %}
|
73
|
+
7+| `{{ constraint.body }}`: `{{ constraint.definition | replace: '|', '\|' }}`
|
74
74
|
|
75
75
|
{% endfor %}
|
76
76
|
{% else %}
|
@@ -1,134 +1,252 @@
|
|
1
1
|
{% for package in context.packages %}
|
2
2
|
{% assign package_name = package.name | downcase | replace: ":", "" | replace: " ", "_" %}
|
3
|
+
{% assign nested_depth = depth | plus: 1 %}
|
3
4
|
{% if additional_context.before and additional_context.before.size > 0 %}
|
4
5
|
{% for before in additional_context.before %}
|
6
|
+
{% if before.text %}
|
7
|
+
|
8
|
+
{% if before.liquid %}
|
9
|
+
{{ before.text | interpolate }}
|
10
|
+
{% else %}
|
5
11
|
{{ before.text }}
|
12
|
+
{% endif %}
|
13
|
+
{% endif %}
|
14
|
+
{% endfor %}
|
15
|
+
{% endif %}
|
16
|
+
|
17
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
18
|
+
{{equalsigns}} {{ package.name }}
|
19
|
+
{%comment%}(package: depth is {{ depth }}, nested_depth is {{ nested_depth }}){%endcomment%}
|
20
|
+
|
21
|
+
{% if additional_context.all_macros.size > 0 %}
|
22
|
+
{% assign sorted_all_macros = additional_context.all_macros | where: "position", "before" | sort: 'index' %}
|
23
|
+
{% for block in sorted_all_macros %}
|
24
|
+
{% case block.type %}
|
25
|
+
{% when 'include_block' %}
|
26
|
+
{% unless block.package and block.package != package.name %}
|
27
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
28
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
29
|
+
{% unless block_content contains "Liquid error" %}
|
30
|
+
{% if block.text %}
|
31
|
+
|
32
|
+
{% if block.liquid %}
|
33
|
+
{{ block.text | interpolate }}
|
34
|
+
{% else %}
|
35
|
+
{{ block.text }}
|
36
|
+
{% endif %}
|
37
|
+
{% endif %}
|
38
|
+
|
39
|
+
{{ block_content }}
|
40
|
+
{% endunless %}
|
41
|
+
{% endunless %}
|
42
|
+
{% when 'package_text' %}
|
43
|
+
{% unless block.package and block.package != package.name %}
|
44
|
+
|
45
|
+
{% if block.liquid %}
|
46
|
+
{{ block.text | interpolate }}
|
47
|
+
{% else %}
|
48
|
+
{{ block.text }}
|
49
|
+
{% endif %}
|
50
|
+
{% endunless %}
|
51
|
+
{% else %}
|
52
|
+
{% endcase %}
|
6
53
|
{% endfor %}
|
7
54
|
{% endif %}
|
8
|
-
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}{{equalsigns}} {{ package.name }}
|
9
|
-
{{equalsigns}}= {{ package.name }}
|
10
55
|
|
11
56
|
{% assign before_package_key = 'before;' | append: package.name %}
|
12
57
|
{% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
|
13
58
|
{% for before in additional_context[before_package_key] %}
|
59
|
+
{% if before.text %}
|
60
|
+
|
61
|
+
{% if before.liquid %}
|
62
|
+
{{ before.text | interpolate }}
|
63
|
+
{% else %}
|
14
64
|
{{ before.text }}
|
65
|
+
{% endif %}
|
66
|
+
{% endif %}
|
15
67
|
{% endfor %}
|
16
68
|
{% endif %}
|
17
69
|
|
70
|
+
.Metadata of {{ package.name }} ({{ package.stereotype }})
|
18
71
|
[cols="1a,4a"]
|
19
72
|
|===
|
20
73
|
|
21
|
-
h|Description: | {{ package.definition }}
|
22
|
-
h|Parent
|
74
|
+
h|Description: | {{ package.definition | replace: '|', '\|' }}
|
75
|
+
h|Parent package: | {{ context.name }}
|
23
76
|
h|Stereotype: | «{{ package.stereotype }}»
|
24
77
|
|
25
78
|
|===
|
26
79
|
|
27
|
-
{% assign
|
28
|
-
{% assign object_types = package.classes | where: "stereotype", "ObjectType" %}
|
80
|
+
{% assign inner_depth = depth | plus: 2 %}
|
29
81
|
{% assign basic_types = package.classes | where: "stereotype", "BasicType" %}
|
30
|
-
{% assign unions = package.
|
82
|
+
{% assign unions = package.data_types | where: "stereotype", "Union" %}
|
31
83
|
{% assign code_lists = package.classes | where: "stereotype", "CodeList" %}
|
32
|
-
{%
|
84
|
+
{% assign not_classes_length = basic_types.size | plus: code_lists.size %}
|
85
|
+
{% assign not_classes_stereotypes = 'DataType,BasicType,Enumeration,CodeList' | split: ','%}
|
86
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
33
87
|
{{equalsigns}}= Classes
|
88
|
+
{%comment%}(class: depth is {{ depth }}, nested_depth is {{ nested_depth }}){%endcomment%}
|
34
89
|
|
35
|
-
{%
|
36
|
-
{% include "packages_data_dictionary_classes", classes: object_types %}
|
37
|
-
{% endif %}
|
90
|
+
{% unless not_classes_length == package.classes.size %}
|
38
91
|
|
39
|
-
{%
|
40
|
-
{
|
92
|
+
{% for klass in package.classes %}
|
93
|
+
{% unless not_classes_stereotypes contains klass.stereotype %}
|
94
|
+
{% include "packages_data_dictionary_class", depth: inner_depth %}
|
95
|
+
{% endunless %}
|
96
|
+
{% endfor %}
|
97
|
+
{% else %}
|
98
|
+
None.
|
99
|
+
{% endunless %}
|
100
|
+
|
101
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
102
|
+
{{equalsigns}}= Basic types
|
103
|
+
{%comment%}(class: depth is {{ depth }}, inner_depth is {{ inner_depth }}){%endcomment%}
|
41
104
|
|
42
|
-
{%
|
105
|
+
{% if basic_types.size > 0 %}
|
106
|
+
{% include "packages_data_dictionary_classes", classes: basic_types, depth: inner_depth %}
|
107
|
+
{% else %}
|
108
|
+
None.
|
43
109
|
{% endif %}
|
44
110
|
|
45
|
-
{%
|
111
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
46
112
|
{{equalsigns}}= Unions
|
113
|
+
{%comment%}(class: depth is {{ depth }}, inner_depth is {{ inner_depth }}){%endcomment%}
|
47
114
|
|
48
|
-
{%
|
115
|
+
{% if unions.size > 0 %}
|
116
|
+
{% include "packages_data_dictionary_classes", classes: unions, depth: inner_depth %}
|
117
|
+
{% else %}
|
118
|
+
None.
|
49
119
|
{% endif %}
|
50
120
|
|
51
|
-
{%
|
52
|
-
{{equalsigns}}= Code
|
121
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
122
|
+
{{equalsigns}}= Code lists
|
123
|
+
{%comment%}(class: depth is {{ depth }}, inner_depth is {{ inner_depth }}){%endcomment%}
|
53
124
|
|
54
|
-
{%
|
125
|
+
{% if code_lists.size > 0 %}
|
126
|
+
{% include "packages_data_dictionary_classes", classes: code_lists, depth: inner_depth %}
|
127
|
+
{% else %}
|
128
|
+
None.
|
55
129
|
{% endif %}
|
56
130
|
|
57
|
-
{%
|
58
|
-
{{equalsigns}}= Data
|
131
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
132
|
+
{{equalsigns}}= Data types
|
133
|
+
{%comment%}(class: depth is {{ depth }}, inner_depth is {{ inner_depth }}){%endcomment%}
|
59
134
|
|
60
|
-
{%
|
61
|
-
{%
|
135
|
+
{% assign non_unions = package.data_types | where: "stereotype", "DataType" %}
|
136
|
+
{% if non_unions.size > 0 %}
|
137
|
+
{% for data_type in non_unions %}
|
138
|
+
{% capture generalizations %}{% assign inheritance = klass.associations | where: "member_end_type", "inheritance" %}{% for assoc in inheritance %}{% capture ref_id %}{% if additional_context.external_classes[assoc.member_end] %}{{ additional_context.external_classes[assoc.member_end] }}{% else %}{{ assoc.member_end }}-section{% endif %}{% endcapture %}<<{{ ref_id }},{{ assoc.member_end }}>>{% endfor %}{% endcapture %}
|
62
139
|
[[{{ data_type.name }}-section]]
|
63
|
-
|
140
|
+
{{equalsigns}}== {{ data_type.name }}
|
141
|
+
|
142
|
+
.Metadata of {{ data_type.name }} ({{ data_type.stereotype }})
|
143
|
+
[cols="1a,4a"]
|
144
|
+
|===
|
145
|
+
h|Definition: | {{ data_type.definition | replace: '|', '\|' }}
|
146
|
+
h|Subclass of: | {% if generalizations.size > 0 %}{{ generalizations }}{% else %}None{% endif %}
|
147
|
+
h|Stereotype: | «{{ data_type.stereotype }}»
|
148
|
+
|
149
|
+
{% if data_type.constraints.size > 0 %}
|
150
|
+
{% for constraint in data_type.constraints %}
|
151
|
+
h| Constraint:
|
152
|
+
| `{{ constraint.body }}`:
|
153
|
+
|
154
|
+
[source,ocl,%unnumbered]
|
155
|
+
------
|
156
|
+
{{ constraint.definition | replace: '|', '\|' }}
|
157
|
+
------
|
158
|
+
{% endfor %}
|
159
|
+
{% endif %}
|
160
|
+
|
64
161
|
|===
|
65
|
-
|
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
|
-
!===
|
162
|
+
|
72
163
|
{% if data_type.associations.size > 0 %}
|
73
164
|
{% capture rendered_associations %}
|
74
165
|
{% for assoc in data_type.associations %}
|
75
166
|
{% if assoc.member_end_attribute_name.size > 0 %}
|
76
|
-
{% capture cardinality %}{%
|
77
|
-
|
167
|
+
{% capture cardinality %}[{% case assoc.member_end_cardinality.min %}{% when "C" %}0{% when "M" %}1{% else %}{{assoc.member_end_cardinality.min}}{% endcase %}..{{ assoc.member_end_cardinality.max }}]{% endcapture %}
|
168
|
+
| {{ assoc.member_end_attribute_name }}
|
169
|
+
{% capture ref_id %}{% if additional_context.external_classes[assoc.member_end] %}{{ additional_context.external_classes[assoc.member_end] }}{% else %}{{ assoc.member_end }}-section{% endif %}{% endcapture %}
|
170
|
+
| <<{{ ref_id }},{{assoc.member_end}}>> {{ cardinality }}
|
171
|
+
| {{ assoc.definition | replace: '|', '\|' }}
|
78
172
|
{% endif %}
|
79
173
|
{% endfor %}
|
80
174
|
{% endcapture %}
|
81
|
-
|
82
|
-
|
|
83
|
-
|
84
|
-
|
175
|
+
|
176
|
+
{% assign associations_stripped = rendered_associations | strip_newlines | strip %}
|
177
|
+
|
178
|
+
{% if associations_stripped.size > 0 %}
|
179
|
+
.Associations of {{ data_type.name }} ({{ data_type.stereotype }})
|
180
|
+
[cols="15a,20a,60a",options="header"]
|
181
|
+
|===
|
182
|
+
| Role name | Target class and multiplicity | Definition
|
183
|
+
|
85
184
|
{{ rendered_associations }}
|
86
|
-
|
185
|
+
|
186
|
+
|===
|
87
187
|
{% endif %}
|
88
188
|
{% endif %}
|
189
|
+
|
89
190
|
{% if data_type.attributes.size > 0 %}
|
90
|
-
|
91
|
-
|
92
|
-
|
191
|
+
.Attributes of {{ data_type.name }} ({{ data_type.stereotype }})
|
192
|
+
[cols="15a,20a,60a",options="header"]
|
193
|
+
|===
|
194
|
+
| Attribute | Value type and multiplicity | Definition
|
195
|
+
|
93
196
|
{% for attr in data_type.attributes %}
|
94
|
-
{% capture cardinality %}{%
|
95
|
-
|
197
|
+
{% capture cardinality %}[{% case attr.cardinality.min %}{% when 'C' %}0{% when 'M' %}1{% else %}{{ attr.cardinality.min }}{% endcase %}..{{ attr.cardinality.max }}]{% endcapture %}
|
198
|
+
| {{ attr.name }}
|
199
|
+
{% capture ref_id %}{% if additional_context.external_classes[attr.type] %}{{ additional_context.external_classes[attr.type] }}{% else %}{{ attr.type }}-section{% endif %}{% endcapture %}
|
200
|
+
| <<{{ ref_id }},{{ attr.type }}>> {{ cardinality }}
|
201
|
+
| {{ attr.definition | replace: '|', '\|' }}
|
202
|
+
|
96
203
|
{% endfor %}
|
97
|
-
!===
|
98
|
-
|{set:cellbgcolor:#FFFFFF} Note: Unless otherwise specified, all attributes and role names have the stereotype «Property».
|
99
|
-
{% endif %}
|
100
204
|
|===
|
101
205
|
|
206
|
+
[NOTE,keep-separate=true]
|
207
|
+
====
|
208
|
+
Unless otherwise specified, all attributes and role names have the stereotype
|
209
|
+
«Property».
|
210
|
+
====
|
211
|
+
{% endif %}
|
212
|
+
|
102
213
|
{% endfor %}
|
214
|
+
{% else %}
|
215
|
+
None.
|
103
216
|
{% endif %}
|
104
217
|
|
105
|
-
{% if package.enums.size > 0 %}
|
106
218
|
{{equalsigns}}= Enumerations
|
107
219
|
|
220
|
+
{% if package.enums.size > 0 %}
|
108
221
|
{% for enum in package.enums %}
|
109
|
-
{% capture generalizations %}{% for assoc in enum.associations | where: "member_end_type", "generalization" %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
|
110
222
|
[[{{ enum.name }}-section]]
|
111
|
-
|
223
|
+
{{equalsigns}}== {{ enum.name }}
|
224
|
+
|
225
|
+
.Metadata of {{ enum.name }} (Enumeration)
|
226
|
+
[cols="1a,4a"]
|
112
227
|
|===
|
113
|
-
|
114
|
-
|
|
115
|
-
|
116
|
-
|
117
|
-
!{nbsp}{nbsp}{nbsp}{nbsp}Stereotype: ! «Enumeration»
|
118
|
-
!===
|
228
|
+
h|Definition: | {{ enum.definition | replace: '|', '\|' }}
|
229
|
+
h|Stereotype: | «Enumeration»
|
230
|
+
|===
|
231
|
+
|
119
232
|
{% if enum.values.size > 0 %}
|
120
|
-
|
121
|
-
|
122
|
-
|
233
|
+
.Values of {{ enum.name }} (Enumeration)
|
234
|
+
[cols="1a,4a",options="header"]
|
235
|
+
|===
|
236
|
+
| Literal value | Definition
|
123
237
|
|
124
238
|
{% for val in enum.values %}
|
125
|
-
|
239
|
+
| {{ val.name }}
|
240
|
+
| {{ val.definition | replace: '|', '\|' }}
|
241
|
+
|
126
242
|
{% endfor %}
|
127
|
-
|
128
|
-
{% endif %}
|
243
|
+
|
129
244
|
|===
|
245
|
+
{% endif %}
|
130
246
|
|
131
247
|
{% endfor %}
|
248
|
+
{% else %}
|
249
|
+
None.
|
132
250
|
{% endif %}
|
133
251
|
|
134
252
|
{% if additional_context.include_block and additional_context.include_block.size > 0 %}
|
@@ -151,27 +269,83 @@ h|Stereotype: | «{{ package.stereotype }}»
|
|
151
269
|
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
152
270
|
{% unless block_content contains "Liquid error" %}
|
153
271
|
{% if block.text %}
|
272
|
+
|
273
|
+
{% if block.liquid %}
|
274
|
+
{{ block.text | interpolate }}
|
275
|
+
{% else %}
|
154
276
|
{{ block.text }}
|
155
277
|
{% endif %}
|
278
|
+
{% endif %}
|
156
279
|
{{ block_content }}
|
157
280
|
{% endunless %}
|
158
281
|
{% endfor %}
|
159
282
|
{% endif %}
|
160
283
|
|
284
|
+
{% if additional_context.all_macros.size > 0 %}
|
285
|
+
{% assign sorted_all_macros = additional_context.all_macros | where: "position", "after" | sort: 'index' %}
|
286
|
+
{% for block in sorted_all_macros %}
|
287
|
+
{% case block.type %}
|
288
|
+
{% when 'include_block' %}
|
289
|
+
{% unless block.package and block.package != package.name %}
|
290
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
291
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
292
|
+
{% unless block_content contains "Liquid error" %}
|
293
|
+
{% if block.text %}
|
294
|
+
|
295
|
+
{% if block.liquid %}
|
296
|
+
{{ block.text | interpolate }}
|
297
|
+
{% else %}
|
298
|
+
{{ block.text }}
|
299
|
+
{% endif %}
|
300
|
+
{% endif %}
|
301
|
+
|
302
|
+
{{ block_content }}
|
303
|
+
{% endunless %}
|
304
|
+
{% endunless %}
|
305
|
+
{% when 'package_text' %}
|
306
|
+
{% unless block.package and block.package != package.name %}
|
307
|
+
|
308
|
+
{% if block.liquid %}
|
309
|
+
{{ block.text | interpolate }}
|
310
|
+
{% else %}
|
311
|
+
{{ block.text }}
|
312
|
+
{% endif %}
|
313
|
+
{% endunless %}
|
314
|
+
{% else %}
|
315
|
+
{% endcase %}
|
316
|
+
{% endfor %}
|
317
|
+
{% endif %}
|
318
|
+
|
319
|
+
|
161
320
|
{% assign after_package_key = 'after;' | append: package.name %}
|
162
321
|
{% if additional_context[after_package_key] %}
|
163
|
-
{{equalsigns}}= Additional
|
322
|
+
{{equalsigns}}= Additional information
|
164
323
|
{% for after in additional_context[after_package_key] %}
|
324
|
+
{% if after.text %}
|
325
|
+
|
326
|
+
{% if after.liquid %}
|
327
|
+
{{ after.text | interpolate }}
|
328
|
+
{% else %}
|
165
329
|
{{ after.text }}
|
330
|
+
{% endif %}
|
331
|
+
{% endif %}
|
166
332
|
{% endfor %}
|
167
333
|
{% endif %}
|
334
|
+
|
168
335
|
{% if package.packages.size > 0 and render_nested_packages %}
|
169
|
-
{%
|
336
|
+
{% include "packages_data_dictionary", depth: nested_depth, context: package %}
|
170
337
|
{% endif %}
|
171
338
|
{% endfor %}
|
172
339
|
|
173
340
|
{% if additional_context.after and additional_context.after.size > 0 %}
|
174
341
|
{% for after in additional_context.after %}
|
342
|
+
{% if after.text %}
|
343
|
+
|
344
|
+
{% if after.liquid %}
|
345
|
+
{{ after.text | interpolate }}
|
346
|
+
{% else %}
|
175
347
|
{{ after.text }}
|
348
|
+
{% endif %}
|
349
|
+
{% endif %}
|
176
350
|
{% endfor %}
|
177
351
|
{% endif %}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}
|
2
|
+
{% capture generalizations %}{% assign inheritance = klass.associations | where: "member_end_type", "inheritance" %}{% for assoc in inheritance %}{% capture ref_id %}{% if additional_context.external_classes[assoc.member_end] %}{{ additional_context.external_classes[assoc.member_end] }}{% else %}{{ assoc.member_end }}-section{% endif %}{% endcapture %}<<{{ ref_id }},{{ assoc.member_end }}>>{% endfor %}{% endcapture %}
|
3
|
+
[[{{ klass.name }}-section]]
|
4
|
+
{{equalsigns}} {{ klass.name }}
|
5
|
+
{%comment%}(inside class: depth is {{ depth }}, equalsigns {{equalsigns}}){%endcomment%}
|
6
|
+
|
7
|
+
.Metadata of {{ klass.name }} ({{klass.stereotype}})
|
8
|
+
[cols="1a,4a"]
|
9
|
+
|===
|
10
|
+
h| Definition: | {{ klass.definition | replace: '|', '\|' }}
|
11
|
+
h| Subclass of: | {% if generalizations.size > 0 %}{{ generalizations }}{% else %}None{% endif %}
|
12
|
+
h| Stereotype: | «{{ klass.stereotype }}»
|
13
|
+
|
14
|
+
{% if klass.constraints.size > 0 %}
|
15
|
+
{% for constraint in klass.constraints %}
|
16
|
+
h| Constraint:
|
17
|
+
| `{{ constraint.body }}`:
|
18
|
+
|
19
|
+
[source,ocl,%unnumbered]
|
20
|
+
------
|
21
|
+
{{ constraint.definition | replace: '|', '\|' }}
|
22
|
+
------
|
23
|
+
{% endfor %}
|
24
|
+
{% endif %}
|
25
|
+
|
26
|
+
|===
|
27
|
+
|
28
|
+
{% if klass.associations.size > 0 %}
|
29
|
+
{% capture rendered_associations %}
|
30
|
+
{% for assoc in klass.associations %}
|
31
|
+
{% if assoc.member_end_attribute_name.size > 0 %}
|
32
|
+
{% capture cardinality %}[{% case assoc.member_end_cardinality.min %}{% when "C" %}0{% when "M" %}1{% else %}{{assoc.member_end_cardinality.min}}{% endcase %}..{{ assoc.member_end_cardinality.max }}]{% endcapture %}
|
33
|
+
| {{ assoc.member_end_attribute_name }}
|
34
|
+
{% capture ref_id %}{% if additional_context.external_classes[assoc.member_end] %}{{ additional_context.external_classes[assoc.member_end] }}{% else %}{{ assoc.member_end }}-section{% endif %}{% endcapture %}
|
35
|
+
| <<{{ ref_id }},{{assoc.member_end}}>> {{ cardinality }}
|
36
|
+
| {{ assoc.definition | replace: '|', '\|' }}
|
37
|
+
{% endif %}
|
38
|
+
{% endfor %}
|
39
|
+
{% endcapture %}
|
40
|
+
{% assign associations_stripped = rendered_associations | strip_newlines | strip %}
|
41
|
+
|
42
|
+
{% if associations_stripped.size > 0 %}
|
43
|
+
.Associations of {{ klass.name }} ({{ klass.stereotype }})
|
44
|
+
[cols="15a,20a,60a",options="header"]
|
45
|
+
|===
|
46
|
+
| Role name | Target class and multiplicity | Definition
|
47
|
+
|
48
|
+
{{ rendered_associations }}
|
49
|
+
|
50
|
+
|===
|
51
|
+
{% endif %}
|
52
|
+
{% endif %}
|
53
|
+
|
54
|
+
{% if klass.attributes.size > 0 %}
|
55
|
+
.Attributes of {{ klass.name }} ({{klass.stereotype}})
|
56
|
+
[cols="15a,20a,60a",options="header"]
|
57
|
+
|===
|
58
|
+
| Attribute | Value type and multiplicity | Definition
|
59
|
+
|
60
|
+
{% for attr in klass.attributes %}
|
61
|
+
{% capture cardinality %}[{% case attr.cardinality.min %}{% when 'C' %}0{% when 'M' %}1{% else %}{{ attr.cardinality.min }}{% endcase %}..{{ attr.cardinality.max }}]{% endcapture %}
|
62
|
+
| {{ attr.name }}
|
63
|
+
{% capture ref_id %}{% if additional_context.external_classes[attr.type] %}{{ additional_context.external_classes[attr.type] }}{% else %}{{ attr.type }}-section{% endif %}{% endcapture %}
|
64
|
+
| <<{{ ref_id }},{{ attr.type }}>> {{ cardinality }}
|
65
|
+
| {{ attr.definition | replace: '|', '\|' }}
|
66
|
+
|
67
|
+
{% endfor %}
|
68
|
+
|===
|
69
|
+
|
70
|
+
[NOTE,keep-separate=true]
|
71
|
+
====
|
72
|
+
Unless otherwise specified, all attributes and role names have the stereotype
|
73
|
+
«Property».
|
74
|
+
====
|
75
|
+
{% endif %}
|
@@ -1,43 +1,3 @@
|
|
1
1
|
{% for klass in classes %}
|
2
|
-
{%
|
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
|
-
|
2
|
+
{% include "packages_data_dictionary_class", depth: depth %}
|
43
3
|
{% endfor %}
|
@@ -3,8 +3,8 @@
|
|
3
3
|
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
4
4
|
{% endif %}
|
5
5
|
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
6
|
-
[[
|
7
|
-
.
|
6
|
+
[[section-{{ klass.xmi_id }}]]
|
7
|
+
.Definition table of “{{ package.name }}::{{ klass.name }}” ({{ klass.stereotype }})
|
8
8
|
[width="100%",cols="a,a,a,a,a,a,a,a"]
|
9
9
|
|===
|
10
10
|
|
@@ -24,14 +24,14 @@ h|Inheritance from: 7+| {{ inherited | map: 'member_end' | join: ", " }}
|
|
24
24
|
h|Generalization of: 7+| {{ generalizations | map: 'member_end' | join: ", " }}
|
25
25
|
{% endif %}
|
26
26
|
|
27
|
-
h|Abstract: 7+| {
|
27
|
+
h|Abstract: 7+| {% if klass.is_abstract %}True{% else %}False{% endif %}
|
28
28
|
{% assign aggregations = klass.associations | where: "member_end_type", "aggregation" %}
|
29
29
|
{% if aggregations.size > 0 %}
|
30
30
|
.{{aggregations.size | plus: 1}}+h|Associations:
|
31
|
-
4+|_Association
|
32
|
-
|_Obligation_
|
31
|
+
4+| _Association with_
|
32
|
+
| _Obligation_
|
33
33
|
| _Maximum occurrence_
|
34
|
-
|
|
34
|
+
| _Provides_
|
35
35
|
|
36
36
|
{% for assoc in aggregations %}
|
37
37
|
4+| {{assoc.member_end}}
|
@@ -41,12 +41,11 @@ h|Abstract: 7+| {{ klass.is_abstract }}
|
|
41
41
|
|
42
42
|
{% endfor %}
|
43
43
|
{% else %}
|
44
|
-
|
45
|
-
.1+h|Associations: 7+| (none)
|
44
|
+
h| Associations: 7+| (none)
|
46
45
|
{% endif %}
|
47
46
|
|
48
47
|
{% if klass.attributes.size > 0 %}
|
49
|
-
.{{klass.attributes.size | plus: 1}}+h|Values:
|
48
|
+
.{{klass.attributes.size | plus: 1}}+h| Values:
|
50
49
|
| _Name_
|
51
50
|
6+| _Definition_
|
52
51
|
|
@@ -56,7 +55,7 @@ h|Abstract: 7+| {{ klass.is_abstract }}
|
|
56
55
|
|
57
56
|
{% endfor %}
|
58
57
|
{% else %}
|
59
|
-
|
58
|
+
h| Values:
|
60
59
|
7+| (none)
|
61
60
|
{% endif %}
|
62
61
|
|