expressir 2.1.30 → 2.1.31
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/.github/workflows/docs.yml +98 -0
- data/.github/workflows/links.yml +100 -0
- data/.github/workflows/rake.yml +4 -0
- data/.github/workflows/release.yml +5 -0
- data/.github/workflows/validate_schemas.yml +1 -1
- data/.gitignore +3 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +244 -39
- data/Gemfile +2 -1
- data/README.adoc +621 -54
- data/docs/Gemfile +12 -0
- data/docs/_config.yml +141 -0
- data/docs/_guides/changes/changes-format.adoc +778 -0
- data/docs/_guides/changes/importing-eengine.adoc +898 -0
- data/docs/_guides/changes/index.adoc +396 -0
- data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
- data/docs/_guides/changes/validating-changes.adoc +681 -0
- data/docs/_guides/cli/benchmark-performance.adoc +834 -0
- data/docs/_guides/cli/coverage-analysis.adoc +921 -0
- data/docs/_guides/cli/format-schemas.adoc +547 -0
- data/docs/_guides/cli/index.adoc +8 -0
- data/docs/_guides/cli/managing-changes.adoc +927 -0
- data/docs/_guides/cli/validate-ascii.adoc +645 -0
- data/docs/_guides/cli/validate-schemas.adoc +534 -0
- data/docs/_guides/index.adoc +165 -0
- data/docs/_guides/ler/creating-packages.adoc +664 -0
- data/docs/_guides/ler/index.adoc +305 -0
- data/docs/_guides/ler/loading-packages.adoc +707 -0
- data/docs/_guides/ler/package-formats.adoc +748 -0
- data/docs/_guides/ler/querying-packages.adoc +826 -0
- data/docs/_guides/ler/validating-packages.adoc +750 -0
- data/docs/_guides/liquid/basic-templates.adoc +813 -0
- data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
- data/docs/_guides/liquid/drops-reference.adoc +829 -0
- data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
- data/docs/_guides/liquid/index.adoc +468 -0
- data/docs/_guides/manifests/creating-manifests.adoc +483 -0
- data/docs/_guides/manifests/index.adoc +307 -0
- data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
- data/docs/_guides/manifests/validating-manifests.adoc +713 -0
- data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
- data/docs/_guides/ruby-api/index.adoc +257 -0
- data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
- data/docs/_guides/ruby-api/search-engine.adoc +609 -0
- data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
- data/docs/_pages/data-model.adoc +665 -0
- data/docs/_pages/express-language.adoc +506 -0
- data/docs/_pages/getting-started.adoc +414 -0
- data/docs/_pages/index.adoc +116 -0
- data/docs/_pages/introduction.adoc +256 -0
- data/docs/_pages/ler-packages.adoc +837 -0
- data/docs/_pages/parsers.adoc +683 -0
- data/docs/_pages/schema-manifests.adoc +431 -0
- data/docs/_references/index.adoc +228 -0
- data/docs/_tutorials/creating-ler-package.adoc +735 -0
- data/docs/_tutorials/documentation-coverage.adoc +795 -0
- data/docs/_tutorials/index.adoc +221 -0
- data/docs/_tutorials/liquid-templates.adoc +806 -0
- data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
- data/docs/_tutorials/querying-schemas.adoc +751 -0
- data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
- data/docs/index.adoc +242 -0
- data/docs/lychee.toml +84 -0
- data/examples/demo_ler_usage.sh +86 -0
- data/examples/ler/README.md +111 -0
- data/examples/ler/simple_example.ler +0 -0
- data/examples/ler/simple_schema.exp +33 -0
- data/examples/ler_build.rb +75 -0
- data/examples/ler_cli.rb +79 -0
- data/examples/ler_demo_complete.rb +276 -0
- data/examples/ler_query.rb +91 -0
- data/examples/ler_query_examples.rb +305 -0
- data/examples/ler_stats.rb +81 -0
- data/examples/phase3_demo.rb +159 -0
- data/examples/query_demo_simple.rb +131 -0
- data/expressir.gemspec +2 -0
- data/lib/expressir/cli.rb +12 -4
- data/lib/expressir/commands/manifest.rb +427 -0
- data/lib/expressir/commands/package.rb +1274 -0
- data/lib/expressir/commands/validate.rb +70 -37
- data/lib/expressir/commands/validate_ascii.rb +607 -0
- data/lib/expressir/commands/validate_load.rb +88 -0
- data/lib/expressir/express/formatter.rb +5 -1
- data/lib/expressir/express/formatters/remark_item_formatter.rb +25 -0
- data/lib/expressir/express/parser.rb +33 -0
- data/lib/expressir/manifest/resolver.rb +213 -0
- data/lib/expressir/manifest/validator.rb +195 -0
- data/lib/expressir/model/declarations/entity.rb +6 -0
- data/lib/expressir/model/dependency_resolver.rb +270 -0
- data/lib/expressir/model/indexes/entity_index.rb +103 -0
- data/lib/expressir/model/indexes/reference_index.rb +148 -0
- data/lib/expressir/model/indexes/type_index.rb +149 -0
- data/lib/expressir/model/interface_validator.rb +384 -0
- data/lib/expressir/model/repository.rb +400 -5
- data/lib/expressir/model/repository_validator.rb +295 -0
- data/lib/expressir/model/search_engine.rb +525 -0
- data/lib/expressir/model.rb +4 -94
- data/lib/expressir/package/builder.rb +200 -0
- data/lib/expressir/package/metadata.rb +81 -0
- data/lib/expressir/package/reader.rb +165 -0
- data/lib/expressir/schema_manifest.rb +11 -1
- data/lib/expressir/version.rb +1 -1
- data/lib/expressir.rb +15 -2
- metadata +114 -4
- data/docs/benchmarking.adoc +0 -107
- data/docs/liquid_drops.adoc +0 -1547
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Changes
|
|
3
|
+
nav_order: 4
|
|
4
|
+
has_children: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
= Changes
|
|
8
|
+
|
|
9
|
+
== Purpose
|
|
10
|
+
|
|
11
|
+
EXPRESS Changes files track schema modifications across versions using a
|
|
12
|
+
standardized YAML format. They provide a structured way to document additions,
|
|
13
|
+
modifications, and deletions in EXPRESS schemas, making version management and
|
|
14
|
+
change tracking systematic and machine-readable.
|
|
15
|
+
|
|
16
|
+
== What are EXPRESS Changes files?
|
|
17
|
+
|
|
18
|
+
EXPRESS Changes files (`.changes.yaml`) document how EXPRESS schemas evolve
|
|
19
|
+
over time. Each file tracks changes for a single schema across multiple
|
|
20
|
+
versions, organized into categories:
|
|
21
|
+
|
|
22
|
+
* **Additions**: New elements added to the schema
|
|
23
|
+
* **Modifications**: Existing elements that were modified
|
|
24
|
+
* **Deletions**: Elements removed from the schema
|
|
25
|
+
* **Mappings**: Mapping-related changes (for ARM/MIM modules)
|
|
26
|
+
|
|
27
|
+
== Benefits of Changes files
|
|
28
|
+
|
|
29
|
+
=== Version tracking
|
|
30
|
+
|
|
31
|
+
Structured history:: Maintain a complete, machine-readable history of schema
|
|
32
|
+
changes across all versions.
|
|
33
|
+
|
|
34
|
+
Version comparison:: Easily compare what changed between any two versions.
|
|
35
|
+
|
|
36
|
+
Documentation integration:: Generate release notes and change summaries
|
|
37
|
+
automatically from structured data.
|
|
38
|
+
|
|
39
|
+
=== Collaboration
|
|
40
|
+
|
|
41
|
+
Team coordination:: Team members can see what changed and why across all
|
|
42
|
+
versions.
|
|
43
|
+
|
|
44
|
+
Review process:: Changes can be reviewed before being incorporated into
|
|
45
|
+
documentation.
|
|
46
|
+
|
|
47
|
+
Audit trail:: Complete record of when changes were made and what was affected.
|
|
48
|
+
|
|
49
|
+
=== Automation
|
|
50
|
+
|
|
51
|
+
Import from tools:: Automatically import changes from Express Engine comparison
|
|
52
|
+
reports.
|
|
53
|
+
|
|
54
|
+
Validation:: Validate changes files to ensure completeness and correctness.
|
|
55
|
+
|
|
56
|
+
Documentation generation:: Use changes data to generate release notes,
|
|
57
|
+
changelogs, and migration guides.
|
|
58
|
+
|
|
59
|
+
== File format
|
|
60
|
+
|
|
61
|
+
Changes files use YAML format with a simple, hierarchical structure:
|
|
62
|
+
|
|
63
|
+
[source,yaml]
|
|
64
|
+
----
|
|
65
|
+
schema: action_schema
|
|
66
|
+
versions:
|
|
67
|
+
- version: 2
|
|
68
|
+
description: Added new functionality
|
|
69
|
+
additions:
|
|
70
|
+
- type: ENTITY
|
|
71
|
+
name: new_entity
|
|
72
|
+
modifications:
|
|
73
|
+
- type: FUNCTION
|
|
74
|
+
name: updated_function
|
|
75
|
+
deletions:
|
|
76
|
+
- type: CONSTANT
|
|
77
|
+
name: removed_constant
|
|
78
|
+
- version: 3
|
|
79
|
+
description: Further improvements
|
|
80
|
+
additions:
|
|
81
|
+
- type: TYPE
|
|
82
|
+
name: new_type
|
|
83
|
+
----
|
|
84
|
+
|
|
85
|
+
== When to use Changes files
|
|
86
|
+
|
|
87
|
+
=== Active schema development
|
|
88
|
+
|
|
89
|
+
Use Changes files when:
|
|
90
|
+
|
|
91
|
+
* Developing schemas with multiple versions
|
|
92
|
+
* Tracking changes for standards documentation
|
|
93
|
+
* Coordinating changes across teams
|
|
94
|
+
* Generating automated documentation
|
|
95
|
+
* Maintaining compatibility information
|
|
96
|
+
|
|
97
|
+
=== Migration scenarios
|
|
98
|
+
|
|
99
|
+
Changes files help with:
|
|
100
|
+
|
|
101
|
+
* Understanding what changed between versions
|
|
102
|
+
* Planning migration strategies
|
|
103
|
+
* Identifying breaking changes
|
|
104
|
+
* Documenting upgrade paths
|
|
105
|
+
|
|
106
|
+
== Workflows
|
|
107
|
+
|
|
108
|
+
=== Manual workflow
|
|
109
|
+
|
|
110
|
+
[source]
|
|
111
|
+
----
|
|
112
|
+
1. Modify EXPRESS schema
|
|
113
|
+
2. Document changes in .changes.yaml
|
|
114
|
+
3. Validate changes file
|
|
115
|
+
4. Commit both schema and changes
|
|
116
|
+
5. Generate documentation from changes
|
|
117
|
+
----
|
|
118
|
+
|
|
119
|
+
=== Express Engine workflow
|
|
120
|
+
|
|
121
|
+
[source]
|
|
122
|
+
----
|
|
123
|
+
1. Compare schema versions in Express Engine
|
|
124
|
+
2. Export comparison report as XML
|
|
125
|
+
3. Import XML to .changes.yaml
|
|
126
|
+
4. Review and edit descriptions if needed
|
|
127
|
+
5. Validate changes file
|
|
128
|
+
6. Generate documentation
|
|
129
|
+
----
|
|
130
|
+
|
|
131
|
+
=== Continuous integration workflow
|
|
132
|
+
|
|
133
|
+
[source]
|
|
134
|
+
----
|
|
135
|
+
1. Schema changes committed
|
|
136
|
+
2. CI runs Express Engine comparison
|
|
137
|
+
3. CI imports changes automatically
|
|
138
|
+
4. CI validates changes file
|
|
139
|
+
5. CI generates change documentation
|
|
140
|
+
6. CI builds updated documentation site
|
|
141
|
+
----
|
|
142
|
+
|
|
143
|
+
== CLI vs API usage
|
|
144
|
+
|
|
145
|
+
=== Command-line interface
|
|
146
|
+
|
|
147
|
+
Best for:
|
|
148
|
+
|
|
149
|
+
* Validating changes files
|
|
150
|
+
* Importing from Express Engine XML
|
|
151
|
+
* One-off operations
|
|
152
|
+
* CI/CD automation
|
|
153
|
+
* Quick validation checks
|
|
154
|
+
|
|
155
|
+
.Example commands
|
|
156
|
+
[example]
|
|
157
|
+
====
|
|
158
|
+
[source,bash]
|
|
159
|
+
----
|
|
160
|
+
# Validate changes file
|
|
161
|
+
expressir changes validate schema.changes.yaml
|
|
162
|
+
|
|
163
|
+
# Import from Express Engine
|
|
164
|
+
expressir changes import-eengine comparison.xml schema_name "2" \
|
|
165
|
+
-o schema.changes.yaml
|
|
166
|
+
|
|
167
|
+
# Validate and normalize
|
|
168
|
+
expressir changes validate schema.changes.yaml --normalize --in-place
|
|
169
|
+
----
|
|
170
|
+
====
|
|
171
|
+
|
|
172
|
+
=== Ruby API
|
|
173
|
+
|
|
174
|
+
Best for:
|
|
175
|
+
|
|
176
|
+
* Creating changes programmatically
|
|
177
|
+
* Integrating with tools
|
|
178
|
+
* Custom processing workflows
|
|
179
|
+
* Building automation
|
|
180
|
+
* Generating reports
|
|
181
|
+
|
|
182
|
+
.Example code
|
|
183
|
+
[example]
|
|
184
|
+
====
|
|
185
|
+
[source,ruby]
|
|
186
|
+
----
|
|
187
|
+
# Load changes file
|
|
188
|
+
require "expressir/changes"
|
|
189
|
+
changes = Expressir::Changes::SchemaChange.from_file(
|
|
190
|
+
"schema.changes.yaml"
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
# Add new version
|
|
194
|
+
changes.add_or_update_version("4", "New features", {
|
|
195
|
+
additions: [
|
|
196
|
+
Expressir::Changes::ItemChange.new(
|
|
197
|
+
type: "ENTITY",
|
|
198
|
+
name: "new_entity"
|
|
199
|
+
)
|
|
200
|
+
]
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
# Save changes
|
|
204
|
+
changes.to_file("schema.changes.yaml")
|
|
205
|
+
----
|
|
206
|
+
====
|
|
207
|
+
|
|
208
|
+
== Express Engine integration
|
|
209
|
+
|
|
210
|
+
=== What is Express Engine?
|
|
211
|
+
|
|
212
|
+
Express Engine (eengine) is a commercial tool for working with EXPRESS schemas.
|
|
213
|
+
It can compare two schema versions and generate a detailed XML comparison
|
|
214
|
+
report.
|
|
215
|
+
|
|
216
|
+
Expressir can import these comparison reports to create or update Changes
|
|
217
|
+
files automatically.
|
|
218
|
+
|
|
219
|
+
=== Three comparison modes
|
|
220
|
+
|
|
221
|
+
Schema mode:: Compares complete schema structures
|
|
222
|
+
+
|
|
223
|
+
[source,xml]
|
|
224
|
+
----
|
|
225
|
+
<schema.changes schema_name="action_schema">
|
|
226
|
+
<schema.additions>...</schema.additions>
|
|
227
|
+
<schema.modifications>...</schema.modifications>
|
|
228
|
+
<schema.deletions>...</schema.deletions>
|
|
229
|
+
</schema.changes>
|
|
230
|
+
----
|
|
231
|
+
|
|
232
|
+
ARM mode:: Compares Application Reference Model schemas
|
|
233
|
+
+
|
|
234
|
+
[source,xml]
|
|
235
|
+
----
|
|
236
|
+
<arm.changes schema_name="action_arm">
|
|
237
|
+
<arm.additions>...</arm.additions>
|
|
238
|
+
<arm.modifications>...</arm.modifications>
|
|
239
|
+
<arm.deletions>...</arm.deletions>
|
|
240
|
+
</arm.changes>
|
|
241
|
+
----
|
|
242
|
+
|
|
243
|
+
MIM mode:: Compares Module Implementation Model schemas
|
|
244
|
+
+
|
|
245
|
+
[source,xml]
|
|
246
|
+
----
|
|
247
|
+
<mim.changes schema_name="action_mim">
|
|
248
|
+
<mim.additions>...</mim.additions>
|
|
249
|
+
<mim.modifications>...</mim.modifications>
|
|
250
|
+
<mim.deletions>...</mim.deletions>
|
|
251
|
+
</mim.changes>
|
|
252
|
+
----
|
|
253
|
+
|
|
254
|
+
All three modes are automatically detected and handled by Expressir's import
|
|
255
|
+
command.
|
|
256
|
+
|
|
257
|
+
== Change types
|
|
258
|
+
|
|
259
|
+
Express Changes files track different types of EXPRESS constructs:
|
|
260
|
+
|
|
261
|
+
Schema-level entities::
|
|
262
|
+
* `ENTITY` - Entity definitions
|
|
263
|
+
* `TYPE` - Type definitions
|
|
264
|
+
* `FUNCTION` - Function definitions
|
|
265
|
+
* `PROCEDURE` - Procedure definitions
|
|
266
|
+
* `RULE` - Rule definitions
|
|
267
|
+
* `CONSTANT` - Constant definitions
|
|
268
|
+
* `SUBTYPE_CONSTRAINT` - Subtype constraints
|
|
269
|
+
|
|
270
|
+
Interface changes::
|
|
271
|
+
* `USE_FROM` - Interface imports with `interfaced_items`
|
|
272
|
+
* `REFERENCE_FROM` - Interface references with `interfaced_items`
|
|
273
|
+
|
|
274
|
+
The `interfaced_items` field specifies which items are being imported or
|
|
275
|
+
referenced from another schema.
|
|
276
|
+
|
|
277
|
+
== Guide contents
|
|
278
|
+
|
|
279
|
+
This section provides comprehensive documentation for working with EXPRESS
|
|
280
|
+
Changes files:
|
|
281
|
+
|
|
282
|
+
link:changes-format.html[Changes Format]:: Complete YAML format specification
|
|
283
|
+
with field descriptions and examples
|
|
284
|
+
|
|
285
|
+
link:validating-changes.html[Validating Changes]:: How to validate and
|
|
286
|
+
normalize changes files
|
|
287
|
+
|
|
288
|
+
link:importing-eengine.html[Importing from Express Engine]:: Converting Express
|
|
289
|
+
Engine XML reports to Changes format
|
|
290
|
+
|
|
291
|
+
link:programmatic-usage.html[Programmatic Usage]:: Using the Ruby API to create
|
|
292
|
+
and manage changes
|
|
293
|
+
|
|
294
|
+
== Quick examples
|
|
295
|
+
|
|
296
|
+
=== Creating a simple changes file
|
|
297
|
+
|
|
298
|
+
[source,yaml]
|
|
299
|
+
----
|
|
300
|
+
schema: my_schema
|
|
301
|
+
versions:
|
|
302
|
+
- version: 2
|
|
303
|
+
description: Added support for new features
|
|
304
|
+
additions:
|
|
305
|
+
- type: ENTITY
|
|
306
|
+
name: new_feature_entity
|
|
307
|
+
description:
|
|
308
|
+
- Provides support for advanced features
|
|
309
|
+
modifications:
|
|
310
|
+
- type: FUNCTION
|
|
311
|
+
name: existing_function
|
|
312
|
+
description:
|
|
313
|
+
- Updated parameters
|
|
314
|
+
- Improved performance
|
|
315
|
+
----
|
|
316
|
+
|
|
317
|
+
=== Interface changes
|
|
318
|
+
|
|
319
|
+
[source,yaml]
|
|
320
|
+
----
|
|
321
|
+
schema: my_schema
|
|
322
|
+
versions:
|
|
323
|
+
- version: 2
|
|
324
|
+
description: Added external references
|
|
325
|
+
additions:
|
|
326
|
+
- type: USE_FROM
|
|
327
|
+
name: geometry_schema
|
|
328
|
+
interfaced_items: point
|
|
329
|
+
- type: REFERENCE_FROM
|
|
330
|
+
name: measure_schema
|
|
331
|
+
interfaced_items: length_measure
|
|
332
|
+
----
|
|
333
|
+
|
|
334
|
+
=== Multiple versions
|
|
335
|
+
|
|
336
|
+
[source,yaml]
|
|
337
|
+
----
|
|
338
|
+
schema: my_schema
|
|
339
|
+
versions:
|
|
340
|
+
- version: 2
|
|
341
|
+
description: Initial enhancements
|
|
342
|
+
additions:
|
|
343
|
+
- type: ENTITY
|
|
344
|
+
name: entity_v2
|
|
345
|
+
- version: 3
|
|
346
|
+
description: Further improvements
|
|
347
|
+
modifications:
|
|
348
|
+
- type: ENTITY
|
|
349
|
+
name: entity_v2
|
|
350
|
+
description:
|
|
351
|
+
- Added new attributes
|
|
352
|
+
- version: 4
|
|
353
|
+
description: Removed deprecated items
|
|
354
|
+
deletions:
|
|
355
|
+
- type: FUNCTION
|
|
356
|
+
name: old_function
|
|
357
|
+
----
|
|
358
|
+
|
|
359
|
+
== Next steps
|
|
360
|
+
|
|
361
|
+
Start with these guides based on your needs:
|
|
362
|
+
|
|
363
|
+
For understanding format:: Read link:changes-format.html[Changes Format] for
|
|
364
|
+
complete YAML structure specification
|
|
365
|
+
|
|
366
|
+
For validation:: See link:validating-changes.html[Validating Changes] to learn
|
|
367
|
+
validation and normalization
|
|
368
|
+
|
|
369
|
+
For Express Engine users:: Check
|
|
370
|
+
link:importing-eengine.html[Importing from Express Engine] for XML import
|
|
371
|
+
workflows
|
|
372
|
+
|
|
373
|
+
For developers:: Explore link:programmatic-usage.html[Programmatic Usage] for
|
|
374
|
+
Ruby API documentation
|
|
375
|
+
|
|
376
|
+
== Summary
|
|
377
|
+
|
|
378
|
+
EXPRESS Changes files provide structured, machine-readable change tracking:
|
|
379
|
+
|
|
380
|
+
* YAML format for easy editing and version control
|
|
381
|
+
* Organized by version with categorized changes
|
|
382
|
+
* Support for all EXPRESS construct types
|
|
383
|
+
* Import capability from Express Engine XML
|
|
384
|
+
* Validation and normalization tools
|
|
385
|
+
* Both CLI and API access
|
|
386
|
+
* Integration with documentation workflows
|
|
387
|
+
|
|
388
|
+
Key takeaways:
|
|
389
|
+
|
|
390
|
+
* Use Changes files for systematic version tracking
|
|
391
|
+
* Validate files before committing
|
|
392
|
+
* Import from Express Engine for automation
|
|
393
|
+
* Include descriptive information for each change
|
|
394
|
+
* Track interface changes with `interfaced_items`
|
|
395
|
+
* Build change history incrementally across versions
|
|
396
|
+
* Integrate with CI/CD for automation
|