metanorma-plugin-lutaml 0.4.6 → 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 +155 -74
- data/lib/metanorma/plugin/lutaml/liquid/custom_filters.rb +9 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_diagrams_block.liquid +1 -1
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages.liquid +113 -7
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_class.liquid +12 -12
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary.liquid +235 -63
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_class.liquid +73 -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 +134 -36
- 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
@@ -8,6 +8,15 @@ module Metanorma
|
|
8
8
|
def html2adoc(input)
|
9
9
|
ReverseAdoc.convert(input)
|
10
10
|
end
|
11
|
+
|
12
|
+
def interpolate(input)
|
13
|
+
sub = ::Liquid::Template.parse(input)
|
14
|
+
sub.render(@context)
|
15
|
+
end
|
16
|
+
|
17
|
+
def identify(input)
|
18
|
+
input.split(/(?=[A-Z])/).map(&:downcase).join('-')
|
19
|
+
end
|
11
20
|
end
|
12
21
|
end
|
13
22
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
{% for diagram in package.diagrams %}
|
4
4
|
[[figure-{{ diagram.xmi_id }}]]
|
5
5
|
.{{ diagram.name }}
|
6
|
-
image::{{ image_base_path }}/{{ diagram.xmi_id }}.png[]
|
6
|
+
image::{{ image_base_path }}/{{ diagram.xmi_id }}.{{ format | default: 'png' }}[]
|
7
7
|
|
8
8
|
{% if diagram.definition %}
|
9
9
|
{{ diagram.definition | html2adoc }}
|
@@ -2,7 +2,14 @@
|
|
2
2
|
{% assign package_name = package.name | downcase | replace: ":", "" | replace: " ", "_" %}
|
3
3
|
{% if additional_context.before and additional_context.before.size > 0 %}
|
4
4
|
{% for before in additional_context.before %}
|
5
|
+
{% if before.text %}
|
6
|
+
|
7
|
+
{% if before.liquid %}
|
8
|
+
{{ before.text | interpolate }}
|
9
|
+
{% else %}
|
5
10
|
{{ before.text }}
|
11
|
+
{% endif %}
|
12
|
+
{% endif %}
|
6
13
|
{% endfor %}
|
7
14
|
{% endif %}
|
8
15
|
{% assign is_package_spare = package.name | slice: 0,5 %}
|
@@ -11,24 +18,67 @@
|
|
11
18
|
{% endif %}
|
12
19
|
|
13
20
|
{% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}{{equalsigns}} {{ package.name }} package
|
21
|
+
[[section-{{ package.xmi_id }}]]
|
14
22
|
{{equalsigns}}= {{ package.name }} overview
|
15
23
|
|
24
|
+
{% if additional_context.all_macros.size > 0 %}
|
25
|
+
{% assign sorted_all_macros = additional_context.all_macros | where: "position", "before" | sort: 'index' %}
|
26
|
+
{% for block in sorted_all_macros %}
|
27
|
+
{% case block.type %}
|
28
|
+
{% when 'include_block' %}
|
29
|
+
{% unless block.package and block.package != package.name %}
|
30
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
31
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
32
|
+
{% unless block_content contains "Liquid error" %}
|
33
|
+
{% if block.text %}
|
34
|
+
|
35
|
+
{% if block.liquid %}
|
36
|
+
{{ block.text | interpolate }}
|
37
|
+
{% else %}
|
38
|
+
{{ block.text }}
|
39
|
+
{% endif %}
|
40
|
+
{% endif %}
|
41
|
+
|
42
|
+
{{ block_content }}
|
43
|
+
{% endunless %}
|
44
|
+
{% endunless %}
|
45
|
+
{% when 'package_text' %}
|
46
|
+
{% unless block.package and block.package != package.name %}
|
47
|
+
|
48
|
+
{% if block.liquid %}
|
49
|
+
{{ block.text | interpolate }}
|
50
|
+
{% else %}
|
51
|
+
{{ block.text }}
|
52
|
+
{% endif %}
|
53
|
+
{% endunless %}
|
54
|
+
{% else %}
|
55
|
+
{% endcase %}
|
56
|
+
{% endfor %}
|
57
|
+
{% endif %}
|
58
|
+
|
16
59
|
{% assign before_package_key = 'before;' | append: package.name %}
|
17
60
|
{% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
|
18
61
|
{% for before in additional_context[before_package_key] %}
|
62
|
+
{% if before.text %}
|
63
|
+
|
64
|
+
{% if before.liquid %}
|
65
|
+
{{ before.text | interpolate }}
|
66
|
+
{% else %}
|
19
67
|
{{ before.text }}
|
68
|
+
{% endif %}
|
69
|
+
{% endif %}
|
20
70
|
{% endfor %}
|
21
71
|
{% endif %}
|
22
72
|
{% if additional_context.diagram_include_block %}
|
23
73
|
{% 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 %}
|
74
|
+
{% include "diagrams_block", package_name: package_name, image_base_path: diagram_include_block.base_path, text: diagram_include_block.text, format: diagram_include_block.format %}
|
25
75
|
{% endfor %}
|
26
76
|
{% endif %}
|
27
77
|
|
28
78
|
{% if package.packages.size > 0 %}The {{ package.name }} package is organized into
|
29
79
|
{{ 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
80
|
{% endif %}
|
31
|
-
|
81
|
+
|
32
82
|
{% for module in package.packages %}
|
33
83
|
{% if module.packages.length > 0 %}
|
34
84
|
. {{ module.name }} package comprises:
|
@@ -44,14 +94,14 @@
|
|
44
94
|
|
45
95
|
{{equalsigns}}= Defining tables
|
46
96
|
|
47
|
-
[arabic]
|
48
97
|
{% for klass in package.classes %}
|
49
98
|
{% assign is_klass_spare = klass.name | slice: 0,5 %}
|
50
99
|
{% if is_klass_spare == 'old: ' %}{% continue %}
|
51
100
|
{% elsif is_klass_spare == 'Spare' %}{% continue %}
|
52
101
|
{% endif %}
|
53
102
|
{% assign klass_name = klass.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
54
|
-
|
103
|
+
[[section-{{ klass.xmi_id }}]]
|
104
|
+
.Elements of “{{ package.name }}::{{ klass.name }}” ({{ klass.stereotype }})
|
55
105
|
|
56
106
|
{% endfor %}
|
57
107
|
{% for enum in package.enums %}
|
@@ -60,7 +110,8 @@
|
|
60
110
|
{% elsif is_enum_spare == 'Spare' %}{% continue %}
|
61
111
|
{% endif %}
|
62
112
|
{% assign enum_name = enum.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
63
|
-
|
113
|
+
[[section-{{ enum.xmi_id }}]]
|
114
|
+
.Elements of “{{ package.name }}::{{ enum.name }}” ({{ enum.stereotype }})
|
64
115
|
|
65
116
|
{% endfor %}
|
66
117
|
{% for data_type in package.data_types %}
|
@@ -69,7 +120,8 @@
|
|
69
120
|
{% elsif is_data_type_spare == 'Spare' %}{% continue %}
|
70
121
|
{% endif %}
|
71
122
|
{% assign data_type_name = data_type.name | downcase | replace: ':', '' | replace: ' ', '_' %}
|
72
|
-
|
123
|
+
[[section-{{ data_type.xmi_id }}]]
|
124
|
+
.Elements of “{{ package.name }}::{{ data_type.name }}” ({{ data_type.stereotype }})
|
73
125
|
|
74
126
|
{% endfor %}
|
75
127
|
|
@@ -107,18 +159,65 @@
|
|
107
159
|
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
108
160
|
{% unless block_content contains "Liquid error" %}
|
109
161
|
{% if block.text %}
|
162
|
+
|
163
|
+
{% if block.liquid %}
|
164
|
+
{{ block.text | interpolate }}
|
165
|
+
{% else %}
|
166
|
+
{{ block.text }}
|
167
|
+
{% endif %}
|
168
|
+
{% endif %}
|
169
|
+
{{ block_content }}
|
170
|
+
{% endunless %}
|
171
|
+
{% endfor %}
|
172
|
+
{% endif %}
|
173
|
+
|
174
|
+
{% if additional_context.all_macros.size > 0 %}
|
175
|
+
{% assign sorted_all_macros = additional_context.all_macros | where: "position", "after" | sort: 'index' %}
|
176
|
+
{% for block in sorted_all_macros %}
|
177
|
+
{% case block.type %}
|
178
|
+
{% when 'include_block' %}
|
179
|
+
{% unless block.package and block.package != package.name %}
|
180
|
+
{% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
|
181
|
+
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
182
|
+
{% unless block_content contains "Liquid error" %}
|
183
|
+
{% if block.text %}
|
184
|
+
|
185
|
+
{% if block.liquid %}
|
186
|
+
{{ block.text | interpolate }}
|
187
|
+
{% else %}
|
110
188
|
{{ block.text }}
|
111
189
|
{% endif %}
|
190
|
+
{% endif %}
|
191
|
+
|
112
192
|
{{ block_content }}
|
113
193
|
{% endunless %}
|
194
|
+
{% endunless %}
|
195
|
+
{% when 'package_text' %}
|
196
|
+
{% unless block.package and block.package != package.name %}
|
197
|
+
|
198
|
+
{% if block.liquid %}
|
199
|
+
{{ block.text | interpolate }}
|
200
|
+
{% else %}
|
201
|
+
{{ block.text }}
|
202
|
+
{% endif %}
|
203
|
+
{% endunless %}
|
204
|
+
{% else %}
|
205
|
+
{% endcase %}
|
114
206
|
{% endfor %}
|
115
207
|
{% endif %}
|
116
208
|
|
117
209
|
{% assign after_package_key = 'after;' | append: package.name %}
|
118
210
|
{% if additional_context[after_package_key] %}
|
119
|
-
{{equalsigns}}= Additional
|
211
|
+
{{equalsigns}}= Additional information
|
120
212
|
{% for after in additional_context[after_package_key] %}
|
213
|
+
{% if after.text %}
|
214
|
+
|
215
|
+
{% if after.liquid %}
|
216
|
+
{{ after.text | interpolate }}
|
217
|
+
{% else %}
|
121
218
|
{{ after.text }}
|
219
|
+
{% endif %}
|
220
|
+
{% endif %}
|
122
221
|
{% endfor %}
|
123
222
|
{% endif %}
|
124
223
|
{% if package.packages.size > 0 and render_nested_packages %}
|
@@ -128,6 +227,13 @@
|
|
128
227
|
|
129
228
|
{% if additional_context.after and additional_context.after.size > 0 %}
|
130
229
|
{% for after in additional_context.after %}
|
230
|
+
{% if after.text %}
|
231
|
+
|
232
|
+
{% if after.liquid %}
|
233
|
+
{{ after.text | interpolate }}
|
234
|
+
{% else %}
|
131
235
|
{{ after.text }}
|
236
|
+
{% endif %}
|
237
|
+
{% endif %}
|
132
238
|
{% endfor %}
|
133
239
|
{% endif %}
|
@@ -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,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
|
-
{{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 %}<<{{ assoc.member_end }}-section,{{ 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
|
+
| <<{{assoc.member_end}}-section,{{assoc.member_end}}>> {{ cardinality }}
|
170
|
+
| {{ assoc.definition | replace: '|', '\|' }}
|
78
171
|
{% endif %}
|
79
172
|
{% endfor %}
|
80
173
|
{% endcapture %}
|
81
|
-
|
82
|
-
|
|
83
|
-
|
84
|
-
|
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
|
+
|
85
183
|
{{ rendered_associations }}
|
86
|
-
|
184
|
+
|
185
|
+
|===
|
87
186
|
{% endif %}
|
88
187
|
{% endif %}
|
188
|
+
|
89
189
|
{% if data_type.attributes.size > 0 %}
|
90
|
-
|
91
|
-
|
92
|
-
|
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
|
+
|
93
195
|
{% for attr in data_type.attributes %}
|
94
|
-
{% capture cardinality %}{%
|
95
|
-
|
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
|
+
|
96
201
|
{% endfor %}
|
97
|
-
!===
|
98
|
-
|{set:cellbgcolor:#FFFFFF} Note: Unless otherwise specified, all attributes and role names have the stereotype «Property».
|
99
|
-
{% endif %}
|
100
202
|
|===
|
101
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
|
+
|
102
211
|
{% endfor %}
|
212
|
+
{% else %}
|
213
|
+
None.
|
103
214
|
{% endif %}
|
104
215
|
|
105
|
-
{% if package.enums.size > 0 %}
|
106
216
|
{{equalsigns}}= Enumerations
|
107
217
|
|
218
|
+
{% if package.enums.size > 0 %}
|
108
219
|
{% for enum in package.enums %}
|
109
|
-
{% capture generalizations %}{% for assoc in enum.associations | where: "member_end_type", "generalization" %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
|
110
220
|
[[{{ enum.name }}-section]]
|
111
|
-
|
221
|
+
{{equalsigns}}== {{ enum.name }}
|
222
|
+
|
223
|
+
.Metadata of {{ enum.name }} (Enumeration)
|
224
|
+
[cols="1a,4a"]
|
112
225
|
|===
|
113
|
-
|
114
|
-
|
|
115
|
-
|
116
|
-
|
117
|
-
!{nbsp}{nbsp}{nbsp}{nbsp}Stereotype: ! «Enumeration»
|
118
|
-
!===
|
226
|
+
h|Definition: | {{ enum.definition | replace: '|', '\|' }}
|
227
|
+
h|Stereotype: | «Enumeration»
|
228
|
+
|===
|
229
|
+
|
119
230
|
{% if enum.values.size > 0 %}
|
120
|
-
|
121
|
-
|
122
|
-
|
231
|
+
.Values of {{ enum.name }} (Enumeration)
|
232
|
+
[cols="1a,4a",options="header"]
|
233
|
+
|===
|
234
|
+
| Literal value | Definition
|
123
235
|
|
124
236
|
{% for val in enum.values %}
|
125
|
-
|
237
|
+
| {{ val.name }}
|
238
|
+
| {{ val.definition | replace: '|', '\|' }}
|
239
|
+
|
126
240
|
{% endfor %}
|
127
|
-
|
128
|
-
{% endif %}
|
241
|
+
|
129
242
|
|===
|
243
|
+
{% endif %}
|
130
244
|
|
131
245
|
{% endfor %}
|
246
|
+
{% else %}
|
247
|
+
None.
|
132
248
|
{% endif %}
|
133
249
|
|
134
250
|
{% if additional_context.include_block and additional_context.include_block.size > 0 %}
|
@@ -151,27 +267,83 @@ h|Stereotype: | «{{ package.stereotype }}»
|
|
151
267
|
{% capture block_content %}{% include block_filename %}{% endcapture %}
|
152
268
|
{% unless block_content contains "Liquid error" %}
|
153
269
|
{% if block.text %}
|
270
|
+
|
271
|
+
{% if block.liquid %}
|
272
|
+
{{ block.text | interpolate }}
|
273
|
+
{% else %}
|
154
274
|
{{ block.text }}
|
155
275
|
{% endif %}
|
276
|
+
{% endif %}
|
156
277
|
{{ block_content }}
|
157
278
|
{% endunless %}
|
158
279
|
{% endfor %}
|
159
280
|
{% endif %}
|
160
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
|
+
|
161
318
|
{% assign after_package_key = 'after;' | append: package.name %}
|
162
319
|
{% if additional_context[after_package_key] %}
|
163
|
-
{{equalsigns}}= Additional
|
320
|
+
{{equalsigns}}= Additional information
|
164
321
|
{% for after in additional_context[after_package_key] %}
|
322
|
+
{% if after.text %}
|
323
|
+
|
324
|
+
{% if after.liquid %}
|
325
|
+
{{ after.text | interpolate }}
|
326
|
+
{% else %}
|
165
327
|
{{ after.text }}
|
328
|
+
{% endif %}
|
329
|
+
{% endif %}
|
166
330
|
{% endfor %}
|
167
331
|
{% endif %}
|
332
|
+
|
168
333
|
{% if package.packages.size > 0 and render_nested_packages %}
|
169
|
-
{%
|
334
|
+
{% include "packages_data_dictionary", depth: nested_depth, context: package %}
|
170
335
|
{% endif %}
|
171
336
|
{% endfor %}
|
172
337
|
|
173
338
|
{% if additional_context.after and additional_context.after.size > 0 %}
|
174
339
|
{% for after in additional_context.after %}
|
340
|
+
{% if after.text %}
|
341
|
+
|
342
|
+
{% if after.liquid %}
|
343
|
+
{{ after.text | interpolate }}
|
344
|
+
{% else %}
|
175
345
|
{{ after.text }}
|
346
|
+
{% endif %}
|
347
|
+
{% endif %}
|
176
348
|
{% endfor %}
|
177
349
|
{% endif %}
|