metanorma-plugin-lutaml 0.4.9 → 0.4.10
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 +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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 241b12b07d457ea48176e22ce2cacc4a533c2ffc5435465637d51d37d6da1e80
|
4
|
+
data.tar.gz: 2a2bd1fe63f4febdae9ce40679f525cfe476f2a773ab15c5de9622145dbdbd7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33ef546ecbc2929104ccda434021ef50afbd067d5f466b7d07181aea92415a15aaad67fdf3848b4bd0cf93878e032b007b437a630b1d5ea87398396b446b622f
|
7
|
+
data.tar.gz: 7373d126f78af6063dbfea6076018712f4185a6c0e75e50309befc23bf1e34beeec86ab80d8b36f9c73eb7e5ae238b0522e85ec307ee434538222790cc05d8c3
|
data/README.adoc
CHANGED
@@ -28,7 +28,7 @@ LutaML supports accessing EXPRESS models via the
|
|
28
28
|
https://github.com/lutaml/expressir[Expressir] parser.
|
29
29
|
|
30
30
|
|
31
|
-
=== Usage of the `
|
31
|
+
=== Usage of the `lutaml` macro
|
32
32
|
|
33
33
|
Given an `example.exp` EXPRESS file with the content:
|
34
34
|
|
@@ -57,11 +57,11 @@ SCHEMA test_schema 'test';
|
|
57
57
|
END_SCHEMA;
|
58
58
|
----
|
59
59
|
|
60
|
-
And the `
|
60
|
+
And the `lutaml` macro block:
|
61
61
|
|
62
62
|
[source,adoc]
|
63
63
|
-----
|
64
|
-
[
|
64
|
+
[lutaml,example.exp,my_context]
|
65
65
|
----
|
66
66
|
|
67
67
|
{% for schema in my_context.schemas %}
|
@@ -82,7 +82,7 @@ Where:
|
|
82
82
|
* `{example.exp}` is the location of the EXPRESS schema file (`*.exp`) that
|
83
83
|
contains data to be loaded. Location of the file is computed relative to the
|
84
84
|
source directory that `[lutaml]` is used (e.g., if
|
85
|
-
`[
|
85
|
+
`[lutaml,example.exp,my_context]` is invoked in an `.adoc` file located at
|
86
86
|
`/foo/bar/doc.adoc`, the data file is expected to be found at
|
87
87
|
`/foo/bar/example.exp`);
|
88
88
|
|
@@ -97,8 +97,7 @@ https://github.com/lutaml/expressir/blob/master/lib/expressir/model/schema.rb[sc
|
|
97
97
|
|
98
98
|
Will produce this output:
|
99
99
|
|
100
|
-
|
101
|
-
-----
|
100
|
+
____
|
102
101
|
== test_schema
|
103
102
|
|
104
103
|
=== my_type1
|
@@ -106,9 +105,9 @@ Will produce this output:
|
|
106
105
|
=== my_type3
|
107
106
|
=== my_type4
|
108
107
|
=== my_type5
|
109
|
-
|
108
|
+
____
|
110
109
|
|
111
|
-
This
|
110
|
+
This command also supports `.lutaml` files.
|
112
111
|
|
113
112
|
Instead of using the direct path to the file one can use `lutaml-express-index`
|
114
113
|
document attribute to supply directory with express files or YAML index file to
|
@@ -137,19 +136,22 @@ Example of usage:
|
|
137
136
|
-----
|
138
137
|
= Document title
|
139
138
|
Author
|
140
|
-
:lutaml-express-index:
|
141
|
-
[
|
139
|
+
:lutaml-express-index: index_name; /path/to/express_files; cache=/path/to/cache_file.yaml
|
140
|
+
[lutaml,index_name,context]
|
142
141
|
----
|
143
|
-
{% for schema in
|
142
|
+
{% for schema in context.schemas %}
|
144
143
|
== {{schema.id}}
|
145
144
|
{% endfor %}
|
146
145
|
----
|
147
146
|
-----
|
148
147
|
|
149
|
-
|
148
|
+
== Usage with UML
|
150
149
|
|
151
|
-
|
152
|
-
|
150
|
+
=== Rendering a LutaML view: `lutaml_diagram`
|
151
|
+
|
152
|
+
This command allows to quickly render a LutaML view as an image file.
|
153
|
+
|
154
|
+
Given a file `example.lutaml` file with content:
|
153
155
|
|
154
156
|
[source,java]
|
155
157
|
----
|
@@ -173,16 +175,17 @@ diagram MyView {
|
|
173
175
|
}
|
174
176
|
----
|
175
177
|
|
176
|
-
|
178
|
+
The `lutaml_diagram` command will add the image to the document.
|
177
179
|
|
178
180
|
[source,adoc]
|
179
181
|
-----
|
180
182
|
lutaml_diagram::example.lutaml[]
|
181
183
|
-----
|
182
184
|
|
183
|
-
|
185
|
+
The `lutaml_diagram` command can also be used to denote a block with an embedded
|
186
|
+
LutaML view.
|
184
187
|
|
185
|
-
|
188
|
+
For example:
|
186
189
|
|
187
190
|
[source,java]
|
188
191
|
----
|
@@ -193,9 +196,9 @@ diagram MyView {
|
|
193
196
|
|
194
197
|
enum AddressClassProfile {
|
195
198
|
imlicistAttributeProfile: CharacterString [0..1] {
|
196
|
-
definition
|
197
|
-
|
198
|
-
|
199
|
+
definition {
|
200
|
+
This is multiline AsciiDoc content.
|
201
|
+
}
|
199
202
|
}
|
200
203
|
}
|
201
204
|
|
@@ -210,9 +213,9 @@ diagram MyView {
|
|
210
213
|
----
|
211
214
|
|
212
215
|
|
213
|
-
===
|
216
|
+
=== `lutaml_uml_attributes_table`
|
214
217
|
|
215
|
-
This
|
218
|
+
This command allows rendering definition tables for a UML model.
|
216
219
|
|
217
220
|
Given `example.lutaml` file with the content:
|
218
221
|
|
@@ -247,21 +250,20 @@ And the `lutaml_uml_attributes_table` macro:
|
|
247
250
|
|
248
251
|
Will produce this output:
|
249
252
|
|
250
|
-
|
251
|
-
-----
|
253
|
+
____
|
252
254
|
=== AttributeProfile
|
253
255
|
|
254
|
-
|
255
256
|
.AttributeProfile attributes
|
256
257
|
|===
|
257
258
|
|Name |Definition |Mandatory/ Optional/ Conditional |Max Occur |Data Type
|
258
259
|
|
259
|
-
|addressClassProfile |TODO: enum
|
260
|
+
|addressClassProfile |TODO: enum's definition |M |1 | `CharacterString`
|
260
261
|
|
261
262
|
|imlicistAttributeProfile |this is attribute definition with multiply lines |M |1 | `CharacterString`
|
262
263
|
|
263
264
|
|===
|
264
|
-
|
265
|
+
____
|
266
|
+
|
265
267
|
|
266
268
|
In case of "enumeration" (AddressClassProfile) entity:
|
267
269
|
|
@@ -272,11 +274,9 @@ In case of "enumeration" (AddressClassProfile) entity:
|
|
272
274
|
|
273
275
|
Will produce this output:
|
274
276
|
|
275
|
-
|
276
|
-
-----
|
277
|
+
____
|
277
278
|
=== AddressClassProfile
|
278
279
|
|
279
|
-
|
280
280
|
.AddressClassProfile values
|
281
281
|
|===
|
282
282
|
|Name |Definition
|
@@ -284,11 +284,11 @@ Will produce this output:
|
|
284
284
|
|imlicistAttributeProfile |this is multiline with `asciidoc`
|
285
285
|
|
286
286
|
|===
|
287
|
-
|
287
|
+
____
|
288
288
|
|
289
289
|
=== Usage of `lutaml_uml_datamodel_description` macro
|
290
290
|
|
291
|
-
This
|
291
|
+
This command allows to quickly render data model packages and its dependent
|
292
292
|
objects for supplied XMI file.
|
293
293
|
|
294
294
|
Given an Enterprise Architect `example.xmi` file with 2 packages:
|
@@ -349,13 +349,19 @@ Where:
|
|
349
349
|
|
350
350
|
* `path/to/example.xmi` - required, path to the XMI file to render
|
351
351
|
|
352
|
-
* `[.before]` -
|
352
|
+
* `[.before]` - block text that adds additional text before the rendered output, can be used only once, additional occurrences of macro will overwrite text, not that `literal` block style must be used in there(eg `....`)
|
353
353
|
|
354
|
-
* `[.after]` -
|
354
|
+
* `[.after]` - block text that adds additional text after the rendered output, can be used only once, additional occurrences of macro will overwrite text
|
355
355
|
|
356
|
-
* `[.after, package="Another"]` -
|
356
|
+
* `[.after, package="Another"]` - block text to be inserted before(after in case of `.before` name) the package
|
357
357
|
|
358
|
-
* `[.
|
358
|
+
* `[.package_text, position="after", package="Another"]` - include custom adoc code into package rendered body, `position` is a arequired attribute which tells where to insert the code.
|
359
|
+
|
360
|
+
* `[.package_text, package="Another"]` - same as above, but include block will be included only for supplied package name
|
361
|
+
|
362
|
+
* `[.diagram_include_block]` - block text to automatically include diagram images. Attribute `base_path` is a required attribute to supply path prefix where to look for a diagram image. `format` is an optional attribute that tells what file extension to use when including diagram file.
|
363
|
+
+
|
364
|
+
The logic is as follows:
|
359
365
|
[source,adoc]
|
360
366
|
-----
|
361
367
|
{% for diagram in package.diagrams %}
|
@@ -377,15 +383,30 @@ For instance, the script will take package diagrams supplied in the XMI file and
|
|
377
383
|
|
378
384
|
* `[.include_block, package="Another", base_path="spec/fixtures"]` - same as above, but include block will be included only for supplied package name
|
379
385
|
|
380
|
-
|
386
|
+
|
387
|
+
NOTE: .after, .before, package_text and include_block macroses all can be used with additional option - `liquid`, if this option is supplied then the code inside block will be interpolated in liquid context
|
388
|
+
|
389
|
+
|
390
|
+
There are two other commands that are used to refer to LutaML generated document elements:
|
391
|
+
|
392
|
+
* `lutaml_figure`. Provides a reference anchor to a figure defined in the XMI
|
393
|
+
file, using its XMI ID for reference.
|
394
|
+
|
395
|
+
* `lutaml_table`. Provides a reference anchor to the definition tables of a
|
396
|
+
particular package, class, enumeration or data type object in the XMI.
|
397
|
+
|
398
|
+
The syntax is as follows:
|
381
399
|
|
382
400
|
[source,adoc]
|
383
401
|
-----
|
402
|
+
// For lutaml_figure
|
384
403
|
This is lutaml_figure::[package="Wrapper root package", name="Fig B1 Full model"] figure
|
404
|
+
|
405
|
+
// For lutaml_table
|
385
406
|
This is lutaml_table::[package="Wrapper root package"] package
|
386
407
|
This is lutaml_table::[package="Wrapper root package", class="my name"] class
|
387
|
-
This is lutaml_table::[package="Wrapper root package", enum="my name"]
|
388
|
-
This is lutaml_table::[package="Wrapper root package", data_type="my name"]
|
408
|
+
This is lutaml_table::[package="Wrapper root package", enum="my name"] enumeration
|
409
|
+
This is lutaml_table::[package="Wrapper root package", data_type="my name"] data type
|
389
410
|
-----
|
390
411
|
|
391
412
|
This code will be transformed into `<<figure-{diagram.xmi_id}>>` and will point to diagram figure. One can only use this macro when document rendered `lutaml_uml_datamodel_description` macro as it needs diagram lookup table in order to reference package diagram.
|
@@ -466,13 +487,20 @@ h|Constraints: 7+| (none)
|
|
466
487
|
text after CityGML package
|
467
488
|
-----
|
468
489
|
|
469
|
-
In addition to
|
470
|
-
|
490
|
+
In addition to the XMI file, this macro also supports a YAML configuration file
|
491
|
+
that specifies:
|
492
|
+
|
493
|
+
* What packages to include in the render;
|
471
494
|
|
472
|
-
|
495
|
+
* What render style is desired;
|
496
|
+
|
497
|
+
* Location of the root package (which package should the iterative process start
|
498
|
+
at).
|
499
|
+
|
500
|
+
The format for using the YAML configuration file:
|
473
501
|
|
474
502
|
[source,yaml]
|
475
|
-
|
503
|
+
----
|
476
504
|
---
|
477
505
|
packages:
|
478
506
|
# includes these packages
|
@@ -481,21 +509,49 @@ packages:
|
|
481
509
|
- three
|
482
510
|
# skips these packages
|
483
511
|
- skip: four
|
484
|
-
render_style: entity_list|data_dictionary|default
|
512
|
+
render_style: entity_list | data_dictionary | default
|
485
513
|
section_depth: 2
|
486
|
-
|
514
|
+
----
|
487
515
|
|
488
516
|
Where:
|
489
517
|
|
490
518
|
* `packages` - required, root element with the list of strings or objects
|
519
|
+
|
491
520
|
* `Package *` - pattern matching, specifies lookup condition for packages to
|
492
521
|
render.
|
493
522
|
+
|
494
523
|
NOTE: In this example, it is equal to the following regular expression: `/^Package.*$/`
|
495
524
|
|
496
525
|
* `skip: four` - object with package name to skip
|
497
|
-
|
498
|
-
* `
|
526
|
+
|
527
|
+
* `render_style` - what template to use to render packages, can be one of:
|
528
|
+
|
529
|
+
** `entity_list`
|
530
|
+
|
531
|
+
** `data_dictionary`; or
|
532
|
+
|
533
|
+
** `default`
|
534
|
+
|
535
|
+
* `section_depth` - what package to use as root package for render.
|
536
|
+
e.g., a `section_depth` equal to `2` tells the processor to use the first
|
537
|
+
nested package of the first root packages in XMI file.
|
538
|
+
+
|
539
|
+
EXAMPLE: If the XMI file has this package structure, and we have `section_depth`
|
540
|
+
equal to 2, root package will be `one-1`.
|
541
|
+
+
|
542
|
+
[source,json]
|
543
|
+
----
|
544
|
+
[
|
545
|
+
{
|
546
|
+
name: 'One',
|
547
|
+
packages: [{ name: 'one-1' }, { name: 'one-2' }]
|
548
|
+
},
|
549
|
+
{
|
550
|
+
name: 'Two',
|
551
|
+
packages: [{ name: 'two-1' }, { name: 'two-2' }]
|
552
|
+
}
|
553
|
+
]
|
554
|
+
----
|
499
555
|
|
500
556
|
Usage with macro:
|
501
557
|
|
@@ -509,10 +565,11 @@ Usage with macro:
|
|
509
565
|
----
|
510
566
|
--
|
511
567
|
|
512
|
-
The
|
513
|
-
to the order supplied in the
|
514
|
-
will be skipped during
|
568
|
+
The processor will read the supplied YAML config file (`path/to/config.yml`),
|
569
|
+
and iterate through packages according to the order supplied in the file. All
|
570
|
+
packages that matches `skip` in the YAML config file will be skipped during
|
571
|
+
render.
|
515
572
|
|
516
573
|
== Documentation
|
517
574
|
|
518
|
-
Please refer to https://www.metanorma.
|
575
|
+
Please refer to https://www.metanorma.oeg.
|
@@ -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
|
@@ -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 %}
|
@@ -14,10 +21,52 @@
|
|
14
21
|
[[section-{{ package.xmi_id }}]]
|
15
22
|
{{equalsigns}}= {{ package.name }} overview
|
16
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
|
+
|
17
59
|
{% assign before_package_key = 'before;' | append: package.name %}
|
18
60
|
{% if additional_context[before_package_key] and additional_context[before_package_key].size > 0 %}
|
19
61
|
{% for before in additional_context[before_package_key] %}
|
62
|
+
{% if before.text %}
|
63
|
+
|
64
|
+
{% if before.liquid %}
|
65
|
+
{{ before.text | interpolate }}
|
66
|
+
{% else %}
|
20
67
|
{{ before.text }}
|
68
|
+
{% endif %}
|
69
|
+
{% endif %}
|
21
70
|
{% endfor %}
|
22
71
|
{% endif %}
|
23
72
|
{% if additional_context.diagram_include_block %}
|
@@ -51,7 +100,8 @@
|
|
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 %}
|
110
166
|
{{ block.text }}
|
111
167
|
{% endif %}
|
168
|
+
{% endif %}
|
112
169
|
{{ block_content }}
|
113
170
|
{% endunless %}
|
114
171
|
{% endfor %}
|
115
172
|
{% endif %}
|
116
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 %}
|
188
|
+
{{ block.text }}
|
189
|
+
{% endif %}
|
190
|
+
{% endif %}
|
191
|
+
|
192
|
+
{{ block_content }}
|
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 %}
|
206
|
+
{% endfor %}
|
207
|
+
{% endif %}
|
208
|
+
|
117
209
|
{% assign after_package_key = 'after;' | append: package.name %}
|
118
210
|
{% if additional_context[after_package_key] %}
|
119
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 %}
|