metanorma-plugin-lutaml 0.4.5 → 0.4.9
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 +88 -53
- data/lib/metanorma/plugin/lutaml/liquid_templates/_diagrams_block.liquid +1 -1
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages.liquid +37 -23
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_class.liquid +10 -10
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary.liquid +201 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_class.liquid +67 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_dictionary_classes.liquid +3 -0
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_data_type.liquid +9 -10
- data/lib/metanorma/plugin/lutaml/liquid_templates/_packages_entity_list.liquid +136 -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 -10
- data/lib/metanorma/plugin/lutaml/liquid_templates/test.rb +1 -0
- data/lib/metanorma/plugin/lutaml/lutaml_figure_inline_macro.rb +23 -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_datamodel_description_preprocessor.rb +87 -12
- data/lib/metanorma/plugin/lutaml/version.rb +1 -1
- data/lib/metanorma-plugin-lutaml.rb +2 -0
- metadata +10 -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 }}” (class)
         | 
| 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,12 +63,12 @@ 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 }} | 
| 71 | 
            +
            .{{ klass.constraints.size }}+h| Constraints:
         | 
| 72 72 | 
             
            {% for constr in klass.constraints %}
         | 
| 73 73 | 
             
            7+| `{{ constr.body }}`
         | 
| 74 74 |  | 
| @@ -0,0 +1,201 @@ | |
| 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 | 
            +
             | 
| 10 | 
            +
            {% assign before_package_key = 'before;' | append: package.name %}
         | 
| 11 | 
            +
            {% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
         | 
| 12 | 
            +
            {% for before in additional_context[before_package_key] %}
         | 
| 13 | 
            +
            {{ before.text }}
         | 
| 14 | 
            +
            {% endfor %}
         | 
| 15 | 
            +
            {% endif %}
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            [cols="1a,4a"]
         | 
| 18 | 
            +
            |===
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            h|Description:    | {{ package.definition }}
         | 
| 21 | 
            +
            h|Parent package: | {{ context.name }}
         | 
| 22 | 
            +
            h|Stereotype:     | «{{ package.stereotype }}»
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            |===
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            {% assign basic_types = package.classes | where: "stereotype", "BasicType" %}
         | 
| 27 | 
            +
            {% assign unions = package.data_types | where: "stereotype", "Union" %}
         | 
| 28 | 
            +
            {% assign code_lists = package.classes | where: "stereotype", "CodeList" %}
         | 
| 29 | 
            +
            {% assign not_classes_length = basic_types.size | plus: code_lists.size %}
         | 
| 30 | 
            +
            {% assign not_classes_stereoptypes = 'DataType,BasicType,Enumeration,CodeList' | split: ','%}
         | 
| 31 | 
            +
            {{equalsigns}}= Classes
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            {% unless not_classes_length == package.classes.size %}
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            {% for klass in package.classes %}
         | 
| 36 | 
            +
            {% unless not_classes_stereoptypes contains klass.stereotype  %}
         | 
| 37 | 
            +
            {% include "packages_data_dictionary_class" %}
         | 
| 38 | 
            +
            {% endunless %}
         | 
| 39 | 
            +
            {% endfor %}
         | 
| 40 | 
            +
            {% else %}
         | 
| 41 | 
            +
            None
         | 
| 42 | 
            +
            {% endunless %}
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            {{equalsigns}}= Basic types
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            {% if basic_types.size > 0 %}
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            {% include "packages_data_dictionary_classes", classes: basic_types %}
         | 
| 49 | 
            +
            {% else %}
         | 
| 50 | 
            +
            None
         | 
| 51 | 
            +
            {% endif %}
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            {{equalsigns}}= Unions
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            {% if unions.size > 0 %}
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            {% include "packages_data_dictionary_classes", classes: unions %}
         | 
| 58 | 
            +
            {% else %}
         | 
| 59 | 
            +
            None
         | 
| 60 | 
            +
            {% endif %}
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            {{equalsigns}}= Code lists
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            {% if code_lists.size > 0 %}
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            {% include "packages_data_dictionary_classes", classes: code_lists %}
         | 
| 67 | 
            +
            {% else %}
         | 
| 68 | 
            +
            None
         | 
| 69 | 
            +
            {% endif %}
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            {{equalsigns}}= Data types
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            {% assign non_unions = package.data_types | where: "stereotype", "DataType"  %}
         | 
| 74 | 
            +
            {% if non_unions.size > 0 %}
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            {% for data_type in non_unions %}
         | 
| 77 | 
            +
            {% capture generalizations %}{% assign inheritance = data_type.associations | where: "member_end_type", "inheritance" %}{% for assoc in inheritance %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
         | 
| 78 | 
            +
            [[{{ data_type.name }}-section]]
         | 
| 79 | 
            +
            [cols="1a"]
         | 
| 80 | 
            +
            |===
         | 
| 81 | 
            +
            |*{{ data_type.name }}*
         | 
| 82 | 
            +
            |[cols="1,4"]
         | 
| 83 | 
            +
            !===
         | 
| 84 | 
            +
            !Definition:  ! {{ data_type.definition }}
         | 
| 85 | 
            +
            !Subclass of: ! {% if generalizations.size > 4 %}{{ generalizations }}{% else %}None{% endif %}
         | 
| 86 | 
            +
            !Stereotype:  !  «{{ data_type.stereotype }}»
         | 
| 87 | 
            +
            !===
         | 
| 88 | 
            +
            {% if data_type.associations.size > 0 %}
         | 
| 89 | 
            +
            {% capture rendered_associations %}
         | 
| 90 | 
            +
            {% for assoc in data_type.associations %}
         | 
| 91 | 
            +
            {% if assoc.member_end_attribute_name.size > 0 %}
         | 
| 92 | 
            +
            {% 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 %}
         | 
| 93 | 
            +
            ! {{ assoc.member_end_attribute_name }}  !<<{{assoc.member_end}}-section,{{assoc.member_end}}>> {{ cardinality }} ! {{ assoc.definition }}
         | 
| 94 | 
            +
            {% endif %}
         | 
| 95 | 
            +
            {% endfor %}
         | 
| 96 | 
            +
            {% endcapture %}
         | 
| 97 | 
            +
            {% if rendered_associations.size > 100 %}
         | 
| 98 | 
            +
            |
         | 
| 99 | 
            +
            [cols="15,20,60",options="header"]
         | 
| 100 | 
            +
            !===
         | 
| 101 | 
            +
            ! Role name !Target class and multiplicity !Definition
         | 
| 102 | 
            +
            {{ rendered_associations }}
         | 
| 103 | 
            +
            !===
         | 
| 104 | 
            +
            {% endif %}
         | 
| 105 | 
            +
            {% endif %}
         | 
| 106 | 
            +
            {% if data_type.attributes.size > 0 %}
         | 
| 107 | 
            +
            |
         | 
| 108 | 
            +
            [cols="15,20,60",options="header"]
         | 
| 109 | 
            +
            !===
         | 
| 110 | 
            +
            ! Attribute ! Value type and multiplicity ! Definition
         | 
| 111 | 
            +
            {% for attr in data_type.attributes %}
         | 
| 112 | 
            +
            {% 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 %}
         | 
| 113 | 
            +
            ! {{ attr.name }}  !<<{{ attr.type }}-section,{{ attr.type }}>>  {{ cardinality }} !{{ attr.definition }}
         | 
| 114 | 
            +
            {% endfor %}
         | 
| 115 | 
            +
            !===
         | 
| 116 | 
            +
            | NOTE: Unless otherwise specified, all attributes and role names have the stereotype «Property».
         | 
| 117 | 
            +
            {% endif %}
         | 
| 118 | 
            +
            |===
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            {% endfor %}
         | 
| 121 | 
            +
            {% else %}
         | 
| 122 | 
            +
            None
         | 
| 123 | 
            +
            {% endif %}
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            {{equalsigns}}= Enumerations
         | 
| 126 | 
            +
             | 
| 127 | 
            +
            {% if package.enums.size > 0 %}
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            {% for enum in package.enums %}
         | 
| 130 | 
            +
            [[{{ enum.name }}-section]]
         | 
| 131 | 
            +
            [cols="1a"]
         | 
| 132 | 
            +
            |===
         | 
| 133 | 
            +
            |*{{ enum.name }}*
         | 
| 134 | 
            +
            |
         | 
| 135 | 
            +
            [cols="1,4"]
         | 
| 136 | 
            +
            !===
         | 
| 137 | 
            +
            !Definition: ! {{ enum.definition }}
         | 
| 138 | 
            +
            !Stereotype: ! «Enumeration»
         | 
| 139 | 
            +
            !===
         | 
| 140 | 
            +
            {% if enum.values.size > 0 %}
         | 
| 141 | 
            +
            |
         | 
| 142 | 
            +
            [cols="1,4",options="header"]
         | 
| 143 | 
            +
            !===
         | 
| 144 | 
            +
            ! Literal value !Definition
         | 
| 145 | 
            +
             | 
| 146 | 
            +
            {% for val in enum.values %}
         | 
| 147 | 
            +
            ! {{ val.name }}  !{{ val.definition }}
         | 
| 148 | 
            +
            {% endfor %}
         | 
| 149 | 
            +
            !===
         | 
| 150 | 
            +
            {% endif %}
         | 
| 151 | 
            +
            |===
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            {% endfor %}
         | 
| 154 | 
            +
            {% else %}
         | 
| 155 | 
            +
            None
         | 
| 156 | 
            +
            {% endif %}
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            {% if additional_context.include_block and additional_context.include_block.size > 0 %}
         | 
| 159 | 
            +
            {% for block in additional_context.include_block %}
         | 
| 160 | 
            +
            {% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
         | 
| 161 | 
            +
            {% capture block_content %}{% include block_filename %}{% endcapture %}
         | 
| 162 | 
            +
            {% unless block_content contains "Liquid error" %}
         | 
| 163 | 
            +
            {% if block.text %}
         | 
| 164 | 
            +
            {{ block.text }}
         | 
| 165 | 
            +
            {% endif %}
         | 
| 166 | 
            +
            {{ block_content }}
         | 
| 167 | 
            +
            {% endunless %}
         | 
| 168 | 
            +
            {% endfor %}
         | 
| 169 | 
            +
            {% endif %}
         | 
| 170 | 
            +
             | 
| 171 | 
            +
            {% assign include_block_package_key = 'include_block;' | append: package.name %}
         | 
| 172 | 
            +
            {% if additional_context[include_block_package_key] and additional_context[include_block_package_key].size > 0 %}
         | 
| 173 | 
            +
            {% for block in additional_context[include_block_package_key] %}
         | 
| 174 | 
            +
            {% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
         | 
| 175 | 
            +
            {% capture block_content %}{% include block_filename %}{% endcapture %}
         | 
| 176 | 
            +
            {% unless block_content contains "Liquid error" %}
         | 
| 177 | 
            +
            {% if block.text %}
         | 
| 178 | 
            +
            {{ block.text }}
         | 
| 179 | 
            +
            {% endif %}
         | 
| 180 | 
            +
            {{ block_content }}
         | 
| 181 | 
            +
            {% endunless %}
         | 
| 182 | 
            +
            {% endfor %}
         | 
| 183 | 
            +
            {% endif %}
         | 
| 184 | 
            +
             | 
| 185 | 
            +
            {% assign after_package_key = 'after;' | append: package.name %}
         | 
| 186 | 
            +
            {% if additional_context[after_package_key] %}
         | 
| 187 | 
            +
            {{equalsigns}}= Additional information
         | 
| 188 | 
            +
            {% for after in additional_context[after_package_key] %}
         | 
| 189 | 
            +
            {{ after.text }}
         | 
| 190 | 
            +
            {% endfor %}
         | 
| 191 | 
            +
            {% endif %}
         | 
| 192 | 
            +
            {% if package.packages.size > 0 and render_nested_packages %}
         | 
| 193 | 
            +
            {% assign nested_depth = depth | plus: 1 %}{% include "packages_data_dictionary", depth: nested_depth, context: package %}
         | 
| 194 | 
            +
            {% endif %}
         | 
| 195 | 
            +
            {% endfor %}
         | 
| 196 | 
            +
             | 
| 197 | 
            +
            {% if additional_context.after and additional_context.after.size > 0 %}
         | 
| 198 | 
            +
            {% for after in additional_context.after %}
         | 
| 199 | 
            +
            {{ after.text }}
         | 
| 200 | 
            +
            {% endfor %}
         | 
| 201 | 
            +
            {% endif %}
         | 
| @@ -0,0 +1,67 @@ | |
| 1 | 
            +
            {% capture generalizations %}{% assign inheritance = klass.associations | where: "member_end_type", "inheritance" %}{% for assoc in inheritance %}{{ assoc.member_end }} {% endfor %}{% endcapture %}
         | 
| 2 | 
            +
            [[{{ klass.name }}-section]]
         | 
| 3 | 
            +
            [cols="1a"]
         | 
| 4 | 
            +
            |===
         | 
| 5 | 
            +
            |*{{ klass.name }}*
         | 
| 6 | 
            +
            |
         | 
| 7 | 
            +
            [cols="1,4"]
         | 
| 8 | 
            +
            !===
         | 
| 9 | 
            +
            ! Definition:  ! {{ klass.definition }}
         | 
| 10 | 
            +
            ! Subclass of: ! {% if generalizations.size > 4 %}{{ generalizations }}{% else %}None{% endif %}
         | 
| 11 | 
            +
            ! Stereotype:  ! «{{ klass.stereotype }}»
         | 
| 12 | 
            +
            {% if klass.constraints.size > 0 %}
         | 
| 13 | 
            +
            {% for constraint in klass.constraints %}
         | 
| 14 | 
            +
            ! Constraint:  ! {{ constraint.body }}: {{ constraint.definition | replace: '|', '\|' }}
         | 
| 15 | 
            +
            {% endfor %}
         | 
| 16 | 
            +
            {% endif %}
         | 
| 17 | 
            +
            !===
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            {% if klass.associations.size > 0 %}
         | 
| 20 | 
            +
            {% capture rendered_associations %}
         | 
| 21 | 
            +
            {% for assoc in klass.associations %}
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            {% if assoc.member_end_attribute_name.size > 0 %}
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            {% 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 %}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ! {{ assoc.member_end_attribute_name }}
         | 
| 28 | 
            +
            ! <<{{assoc.member_end}}-section,{{assoc.member_end}}>> {{ cardinality }}
         | 
| 29 | 
            +
            ! {{ assoc.definition }}
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            {% endif %}
         | 
| 32 | 
            +
            {% endfor %}
         | 
| 33 | 
            +
            {% endcapture %}
         | 
| 34 | 
            +
             | 
| 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 | 
            +
            {{ rendered_associations }}
         | 
| 43 | 
            +
            !===
         | 
| 44 | 
            +
            {% endif %}
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            {% 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 | 
            +
             | 
| 56 | 
            +
            {% 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 %}
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            ! {{ attr.name }}
         | 
| 59 | 
            +
            !<<{{ attr.type }}-section,{{ attr.type }}>> {{ cardinality }}
         | 
| 60 | 
            +
            !{{ attr.definition }}
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            {% endfor %}
         | 
| 63 | 
            +
            !===
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            | NOTE: Unless otherwise specified, all attributes and role names have the stereotype «Property».
         | 
| 66 | 
            +
            {% endif %}
         | 
| 67 | 
            +
            |===
         | 
| @@ -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 }}” (data_type)
         | 
| 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 |  | 
| @@ -0,0 +1,136 @@ | |
| 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 | 
            +
            {% if depth %}
         | 
| 9 | 
            +
            [[rc_{{ package_name }}-model_section]]
         | 
| 10 | 
            +
            {% capture equalsigns %}{% for count in (1..depth) %}={% endfor %}{% endcapture %}{{equalsigns}} {{ package.name }}
         | 
| 11 | 
            +
            {% endif %}
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            {% if additional_context.all_macroses.size > 0 %}
         | 
| 14 | 
            +
            {% assign sorted_all_macroses = additional_context.all_macroses | where: "position", "before" | sort: 'index' %}
         | 
| 15 | 
            +
            {% for block in sorted_all_macroses %}
         | 
| 16 | 
            +
            {% case block.type %}
         | 
| 17 | 
            +
            {% when 'include_block' %}
         | 
| 18 | 
            +
            {% unless block.package and block.package != package.name %}
         | 
| 19 | 
            +
            {% capture block_filename %}{{ block.base_path }}{{ package_name }}{% endcapture %}
         | 
| 20 | 
            +
            {% capture block_content %}{% include block_filename %}{% endcapture %}
         | 
| 21 | 
            +
            {% unless block_content contains "Liquid error" %}
         | 
| 22 | 
            +
            {% if block.text %}
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            {{ block.text }}
         | 
| 25 | 
            +
            {% endif %}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            {{ block_content }}
         | 
| 28 | 
            +
            {% endunless %}
         | 
| 29 | 
            +
            {% endunless %}
         | 
| 30 | 
            +
            {% when 'package_text' %}
         | 
| 31 | 
            +
            {% unless block.package and block.package != package.name %}
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            {{ block.text }}
         | 
| 34 | 
            +
            {% endunless %}
         | 
| 35 | 
            +
            {% else %}
         | 
| 36 | 
            +
            {% endcase %}
         | 
| 37 | 
            +
            {% endfor %}
         | 
| 38 | 
            +
            {% endif %}
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            // TODO: move to all_macroses block
         | 
| 41 | 
            +
            {% if additional_context.diagram_include_block %}
         | 
| 42 | 
            +
            {% for diagram_include_block in additional_context.diagram_include_block %}
         | 
| 43 | 
            +
            {% include "diagrams_block", package_name: package_name, image_base_path: diagram_include_block.base_path, text: diagram_include_block.text %}
         | 
| 44 | 
            +
            {% endfor %}
         | 
| 45 | 
            +
            {% endif %}
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            {% if package.classes.size > 0 %}
         | 
| 48 | 
            +
            {{equalsigns}}= Class definitions
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            {% comment %} {% assign data_types = package.classes | where: "stereotype", "DataType" %} {% endcomment %}
         | 
| 51 | 
            +
            {% assign basic_types = package.classes | where: "stereotype", "BasicType" %}
         | 
| 52 | 
            +
            {% comment %} {% assign enumerations = package.classes | where: "stereotype", "Enumeration" %} {% endcomment %}
         | 
| 53 | 
            +
            {% assign code_lists = package.classes | where: "stereotype", "CodeList" %}
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            {% assign not_classes_length = plus: basic_types.size | plus: code_lists.size %}
         | 
| 56 | 
            +
            {% assign not_classes_stereoptypes = 'DataType,BasicType,Enumeration,CodeList' | split: ','%}
         | 
| 57 | 
            +
            {% unless not_classes_length == package.classes.size %}
         | 
| 58 | 
            +
            .Classes used in {{ package.name }}
         | 
| 59 | 
            +
            [cols="2a,6a",options="header"]
         | 
| 60 | 
            +
            |===
         | 
| 61 | 
            +
            |Name |Description
         | 
| 62 | 
            +
            {% for klass in package.classes %}
         | 
| 63 | 
            +
            {% unless not_classes_stereoptypes contains klass.stereotype  %}
         | 
| 64 | 
            +
            |<<{{ klass.name }}-section,{{ klass.name }}>> «{{ klass.stereotype }}»
         | 
| 65 | 
            +
            |{{ klass.definition }}
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            {% endunless %}
         | 
| 68 | 
            +
            {% endfor %}
         | 
| 69 | 
            +
            |===
         | 
| 70 | 
            +
            {% endunless %}
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            {% if package.data_types.size > 0 %}
         | 
| 73 | 
            +
            {% include "packages_entity_list_classes", classes: package.data_types, type: "Data Types" %}
         | 
| 74 | 
            +
            {% endif %}
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            {% if basic_types.size > 0 %}
         | 
| 77 | 
            +
            {% include "packages_entity_list_classes", classes: basic_types, type: "Primitive Data Types" %}
         | 
| 78 | 
            +
            {% endif %}
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            {% if package.enums.size > 0 %}
         | 
| 81 | 
            +
            {% include "packages_entity_list_classes", classes: package.enums, type: "Enumerated Classes" %}
         | 
| 82 | 
            +
            {% endif %}
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            {% if code_lists.size > 0 %}
         | 
| 85 | 
            +
            {% include "packages_entity_list_classes", classes: code_lists, type: "CodeList Classes" %}
         | 
| 86 | 
            +
            {% endif %}
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            {% endif %}
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            {% comment %} {% if package.data_types.size > 0 %}
         | 
| 91 | 
            +
            .Data types used in {{ package.name }}
         | 
| 92 | 
            +
            [cols="2,6",options="header"]
         | 
| 93 | 
            +
            |===
         | 
| 94 | 
            +
            |Name |Description
         | 
| 95 | 
            +
             | 
| 96 | 
            +
            {% for klass in package.data_types %}
         | 
| 97 | 
            +
            |<<{{ klass.name }}-section,{{ klass.name }}>> «{{ klass.stereotype }}»
         | 
| 98 | 
            +
            |{{ klass.definition }}
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            {% endfor %}
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            |===
         | 
| 103 | 
            +
            {% endif %}
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            {% if package.enums.size > 0 %}
         | 
| 106 | 
            +
            .Enumerated Classes used in {{ package.name }}
         | 
| 107 | 
            +
            [cols="2a,6a",options="header"]
         | 
| 108 | 
            +
            |===
         | 
| 109 | 
            +
            |Name |Description
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            {% for klass in package.enums %}
         | 
| 112 | 
            +
            |<<{{ klass.name }}-section,{{ klass.name }}>> «{{ klass.stereotype }}»
         | 
| 113 | 
            +
            |{{ klass.definition }}
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            {% endfor %}
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            |===
         | 
| 118 | 
            +
            {% endif %} {% endcomment %}
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            {% assign after_package_key = 'after;' | append: package.name %}
         | 
| 121 | 
            +
            {% if additional_context[after_package_key] %}
         | 
| 122 | 
            +
            {{equalsigns}}= Additional information
         | 
| 123 | 
            +
            {% for after in additional_context[after_package_key] %}
         | 
| 124 | 
            +
            {{ after.text }}
         | 
| 125 | 
            +
            {% endfor %}
         | 
| 126 | 
            +
            {% endif %}
         | 
| 127 | 
            +
            {% if package.packages.size > 0 and render_nested_packages %}
         | 
| 128 | 
            +
            {% assign nested_depth = depth | plus: 1 %}{% include "packages_entity_list", depth: nested_depth, context: package %}
         | 
| 129 | 
            +
            {% endif %}
         | 
| 130 | 
            +
            {% endfor %}
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            {% if additional_context.after and additional_context.after.size > 0 %}
         | 
| 133 | 
            +
            {% for after in additional_context.after %}
         | 
| 134 | 
            +
            {{ after.text }}
         | 
| 135 | 
            +
            {% endfor %}
         | 
| 136 | 
            +
            {% endif %}
         |