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