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.
@@ -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
+ |===