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,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Tutorials
|
|
3
|
+
has_children: true
|
|
4
|
+
nav_order: 3
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
== Expressir Tutorials
|
|
8
|
+
|
|
9
|
+
=== Purpose
|
|
10
|
+
|
|
11
|
+
These hands-on tutorials guide you through common Expressir tasks from beginner to advanced topics. Each tutorial includes working code examples, practical exercises, and clear learning objectives.
|
|
12
|
+
|
|
13
|
+
=== Getting Started
|
|
14
|
+
|
|
15
|
+
If you're new to Expressir, start with these foundational tutorials:
|
|
16
|
+
|
|
17
|
+
1. link:parsing-your-first-schema.html[Parsing Your First Schema] - Learn the basics of parsing EXPRESS files
|
|
18
|
+
2. link:working-with-multiple-schemas.html[Working with Multiple Schemas] - Handle dependencies and interfaces
|
|
19
|
+
3. link:creating-ler-package.html[Creating LER Packages] - Package schemas for distribution
|
|
20
|
+
|
|
21
|
+
=== Tutorial Path
|
|
22
|
+
|
|
23
|
+
Follow this recommended learning path:
|
|
24
|
+
|
|
25
|
+
==== Beginner Level
|
|
26
|
+
|
|
27
|
+
**link:parsing-your-first-schema.html[Parsing Your First Schema]**::
|
|
28
|
+
Duration: 30-45 minutes
|
|
29
|
+
+
|
|
30
|
+
Learn to parse EXPRESS schemas with both CLI and Ruby API, explore the parsed data model, and handle errors gracefully.
|
|
31
|
+
|
|
32
|
+
**link:working-with-multiple-schemas.html[Working with Multiple Schemas]**::
|
|
33
|
+
Duration: 45-60 minutes
|
|
34
|
+
+
|
|
35
|
+
Master schema dependencies, interfaces (USE FROM / REFERENCE FROM), and cross-schema reference resolution.
|
|
36
|
+
|
|
37
|
+
==== Intermediate Level
|
|
38
|
+
|
|
39
|
+
**link:creating-ler-package.html[Creating LER Packages]**::
|
|
40
|
+
Duration: 45-60 minutes
|
|
41
|
+
+
|
|
42
|
+
Create distributable LER packages for instant loading and high-performance schema distribution.
|
|
43
|
+
|
|
44
|
+
**link:querying-schemas.html[Querying Schemas]**::
|
|
45
|
+
Duration: 60-75 minutes
|
|
46
|
+
+
|
|
47
|
+
Use the SearchEngine API for pattern matching, filtering, and complex queries across schemas.
|
|
48
|
+
|
|
49
|
+
==== Advanced Level
|
|
50
|
+
|
|
51
|
+
**link:liquid-templates.html[Liquid Templates]**::
|
|
52
|
+
Duration: 60-90 minutes
|
|
53
|
+
+
|
|
54
|
+
Generate documentation automatically using Liquid templates and Expressir's drop objects.
|
|
55
|
+
|
|
56
|
+
**link:documentation-coverage.html[Documentation Coverage]**::
|
|
57
|
+
Duration: 45-60 minutes
|
|
58
|
+
+
|
|
59
|
+
Analyze and improve schema documentation quality with coverage tools and metrics.
|
|
60
|
+
|
|
61
|
+
=== Tutorial Features
|
|
62
|
+
|
|
63
|
+
Each tutorial includes:
|
|
64
|
+
|
|
65
|
+
**Prerequisites**::
|
|
66
|
+
What you need to know before starting
|
|
67
|
+
|
|
68
|
+
**Learning Objectives**::
|
|
69
|
+
What you'll be able to do after completion
|
|
70
|
+
|
|
71
|
+
**Step-by-Step Instructions**::
|
|
72
|
+
Clear, numbered steps with explanations
|
|
73
|
+
|
|
74
|
+
**Working Code Examples**::
|
|
75
|
+
Complete, tested code you can run immediately
|
|
76
|
+
|
|
77
|
+
**Expected Output**::
|
|
78
|
+
What success looks like at each step
|
|
79
|
+
|
|
80
|
+
**Practice Exercises**::
|
|
81
|
+
Hands-on activities to reinforce learning
|
|
82
|
+
|
|
83
|
+
**Common Pitfalls**::
|
|
84
|
+
Mistakes to avoid and how to fix them
|
|
85
|
+
|
|
86
|
+
**Next Steps**::
|
|
87
|
+
Where to go after completing the tutorial
|
|
88
|
+
|
|
89
|
+
=== Quick Reference
|
|
90
|
+
|
|
91
|
+
[options="header"]
|
|
92
|
+
|===
|
|
93
|
+
| Tutorial | Level | Focus | Duration
|
|
94
|
+
|
|
95
|
+
| link:parsing-your-first-schema.html[Parsing Your First Schema]
|
|
96
|
+
| Beginner
|
|
97
|
+
| Parsing basics, CLI, Ruby API
|
|
98
|
+
| 30-45 min
|
|
99
|
+
|
|
100
|
+
| link:working-with-multiple-schemas.html[Working with Multiple Schemas]
|
|
101
|
+
| Beginner
|
|
102
|
+
| Dependencies, interfaces
|
|
103
|
+
| 45-60 min
|
|
104
|
+
|
|
105
|
+
| link:creating-ler-package.html[Creating LER Packages]
|
|
106
|
+
| Intermediate
|
|
107
|
+
| Packaging, distribution
|
|
108
|
+
| 45-60 min
|
|
109
|
+
|
|
110
|
+
| link:querying-schemas.html[Querying Schemas]
|
|
111
|
+
| Intermediate
|
|
112
|
+
| SearchEngine, queries
|
|
113
|
+
| 60-75 min
|
|
114
|
+
|
|
115
|
+
| link:liquid-templates.html[Liquid Templates]
|
|
116
|
+
| Advanced
|
|
117
|
+
| Documentation generation
|
|
118
|
+
| 60-90 min
|
|
119
|
+
|
|
120
|
+
| link:documentation-coverage.html[Documentation Coverage]
|
|
121
|
+
| Advanced
|
|
122
|
+
| Coverage analysis
|
|
123
|
+
| 45-60 min
|
|
124
|
+
|===
|
|
125
|
+
|
|
126
|
+
=== Additional Resources
|
|
127
|
+
|
|
128
|
+
==== Before Starting
|
|
129
|
+
|
|
130
|
+
* link:../../getting-started.html[Getting Started] - Install and verify Expressir
|
|
131
|
+
* link:../../express-language.html[EXPRESS Language] - Understanding EXPRESS syntax
|
|
132
|
+
* link:../../data-model.html[Data Model] - Expressir's internal structure
|
|
133
|
+
|
|
134
|
+
==== While Learning
|
|
135
|
+
|
|
136
|
+
* link:../../guides/[Guides] - Detailed guides on specific topics
|
|
137
|
+
* link:../../references/[References] - Complete API documentation
|
|
138
|
+
* https://github.com/lutaml/expressir[GitHub Repository] - Source code and examples
|
|
139
|
+
|
|
140
|
+
==== After Completion
|
|
141
|
+
|
|
142
|
+
* link:../../guides/cli/[CLI Guides] - Master command-line tools
|
|
143
|
+
* link:../../guides/ruby-api/[Ruby API Guides] - Advanced programmatic usage
|
|
144
|
+
* link:../../guides/ler/[LER Guides] - Deep dive into LER packages
|
|
145
|
+
|
|
146
|
+
=== Tutorial Conventions
|
|
147
|
+
|
|
148
|
+
==== Code Blocks
|
|
149
|
+
|
|
150
|
+
**EXPRESS code**:
|
|
151
|
+
[source,express]
|
|
152
|
+
----
|
|
153
|
+
SCHEMA example;
|
|
154
|
+
ENTITY person;
|
|
155
|
+
name : STRING;
|
|
156
|
+
END_ENTITY;
|
|
157
|
+
END_SCHEMA;
|
|
158
|
+
----
|
|
159
|
+
|
|
160
|
+
**Ruby code**:
|
|
161
|
+
[source,ruby]
|
|
162
|
+
----
|
|
163
|
+
require 'expressir'
|
|
164
|
+
repo = Expressir::Express::Parser.from_file('schema.exp')
|
|
165
|
+
----
|
|
166
|
+
|
|
167
|
+
**Shell commands**:
|
|
168
|
+
[source,bash]
|
|
169
|
+
----
|
|
170
|
+
expressir format schema.exp
|
|
171
|
+
----
|
|
172
|
+
|
|
173
|
+
==== Callouts and Annotations
|
|
174
|
+
|
|
175
|
+
* ✅ Success indicators
|
|
176
|
+
* ❌ Error indicators
|
|
177
|
+
* 💡 Tips and best practices
|
|
178
|
+
* ⚠️ Important warnings
|
|
179
|
+
|
|
180
|
+
==== File References
|
|
181
|
+
|
|
182
|
+
File paths are shown relative to your working directory:
|
|
183
|
+
* `schema.exp` - File in current directory
|
|
184
|
+
* `schemas/base.exp` - File in subdirectory
|
|
185
|
+
* `/full/path/to/file.exp` - Absolute path (rare)
|
|
186
|
+
|
|
187
|
+
=== Getting Help
|
|
188
|
+
|
|
189
|
+
**Issues During Tutorials**::
|
|
190
|
+
* Check the "Common Pitfalls" section
|
|
191
|
+
* Verify prerequisites are met
|
|
192
|
+
* Ensure file paths are correct
|
|
193
|
+
* Check Ruby and Expressir versions
|
|
194
|
+
|
|
195
|
+
**Questions or Problems**::
|
|
196
|
+
* link:https://github.com/lutaml/expressir/issues[GitHub Issues] - Report problems
|
|
197
|
+
* link:https://github.com/lutaml/expressir/discussions[GitHub Discussions] - Ask questions
|
|
198
|
+
* link:../../getting-started.html#getting-help[Getting Help] - Support resources
|
|
199
|
+
|
|
200
|
+
**Contributing**::
|
|
201
|
+
Found an error or want to improve a tutorial?
|
|
202
|
+
+
|
|
203
|
+
* Open an issue on GitHub
|
|
204
|
+
* Submit a pull request
|
|
205
|
+
* Share your feedback
|
|
206
|
+
|
|
207
|
+
=== Tutorial Versions
|
|
208
|
+
|
|
209
|
+
These tutorials are written for:
|
|
210
|
+
|
|
211
|
+
* **Expressir**: v1.0+
|
|
212
|
+
* **Ruby**: 2.7+
|
|
213
|
+
* **EXPRESS**: ISO 10303-11:2007
|
|
214
|
+
|
|
215
|
+
If you're using different versions, some examples may need adjustment.
|
|
216
|
+
|
|
217
|
+
=== Next Steps
|
|
218
|
+
|
|
219
|
+
Ready to start? Begin with link:parsing-your-first-schema.html[Parsing Your First Schema] or choose any tutorial based on your needs.
|
|
220
|
+
|
|
221
|
+
For quick reference without step-by-step instructions, see the link:../guides/[Guides] section.
|