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.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +98 -0
  3. data/.github/workflows/links.yml +100 -0
  4. data/.github/workflows/rake.yml +4 -0
  5. data/.github/workflows/release.yml +5 -0
  6. data/.github/workflows/validate_schemas.yml +1 -1
  7. data/.gitignore +3 -0
  8. data/.rubocop.yml +1 -1
  9. data/.rubocop_todo.yml +244 -39
  10. data/Gemfile +2 -1
  11. data/README.adoc +621 -54
  12. data/docs/Gemfile +12 -0
  13. data/docs/_config.yml +141 -0
  14. data/docs/_guides/changes/changes-format.adoc +778 -0
  15. data/docs/_guides/changes/importing-eengine.adoc +898 -0
  16. data/docs/_guides/changes/index.adoc +396 -0
  17. data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
  18. data/docs/_guides/changes/validating-changes.adoc +681 -0
  19. data/docs/_guides/cli/benchmark-performance.adoc +834 -0
  20. data/docs/_guides/cli/coverage-analysis.adoc +921 -0
  21. data/docs/_guides/cli/format-schemas.adoc +547 -0
  22. data/docs/_guides/cli/index.adoc +8 -0
  23. data/docs/_guides/cli/managing-changes.adoc +927 -0
  24. data/docs/_guides/cli/validate-ascii.adoc +645 -0
  25. data/docs/_guides/cli/validate-schemas.adoc +534 -0
  26. data/docs/_guides/index.adoc +165 -0
  27. data/docs/_guides/ler/creating-packages.adoc +664 -0
  28. data/docs/_guides/ler/index.adoc +305 -0
  29. data/docs/_guides/ler/loading-packages.adoc +707 -0
  30. data/docs/_guides/ler/package-formats.adoc +748 -0
  31. data/docs/_guides/ler/querying-packages.adoc +826 -0
  32. data/docs/_guides/ler/validating-packages.adoc +750 -0
  33. data/docs/_guides/liquid/basic-templates.adoc +813 -0
  34. data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
  35. data/docs/_guides/liquid/drops-reference.adoc +829 -0
  36. data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
  37. data/docs/_guides/liquid/index.adoc +468 -0
  38. data/docs/_guides/manifests/creating-manifests.adoc +483 -0
  39. data/docs/_guides/manifests/index.adoc +307 -0
  40. data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
  41. data/docs/_guides/manifests/validating-manifests.adoc +713 -0
  42. data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
  43. data/docs/_guides/ruby-api/index.adoc +257 -0
  44. data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
  45. data/docs/_guides/ruby-api/search-engine.adoc +609 -0
  46. data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
  47. data/docs/_pages/data-model.adoc +665 -0
  48. data/docs/_pages/express-language.adoc +506 -0
  49. data/docs/_pages/getting-started.adoc +414 -0
  50. data/docs/_pages/index.adoc +116 -0
  51. data/docs/_pages/introduction.adoc +256 -0
  52. data/docs/_pages/ler-packages.adoc +837 -0
  53. data/docs/_pages/parsers.adoc +683 -0
  54. data/docs/_pages/schema-manifests.adoc +431 -0
  55. data/docs/_references/index.adoc +228 -0
  56. data/docs/_tutorials/creating-ler-package.adoc +735 -0
  57. data/docs/_tutorials/documentation-coverage.adoc +795 -0
  58. data/docs/_tutorials/index.adoc +221 -0
  59. data/docs/_tutorials/liquid-templates.adoc +806 -0
  60. data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
  61. data/docs/_tutorials/querying-schemas.adoc +751 -0
  62. data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
  63. data/docs/index.adoc +242 -0
  64. data/docs/lychee.toml +84 -0
  65. data/examples/demo_ler_usage.sh +86 -0
  66. data/examples/ler/README.md +111 -0
  67. data/examples/ler/simple_example.ler +0 -0
  68. data/examples/ler/simple_schema.exp +33 -0
  69. data/examples/ler_build.rb +75 -0
  70. data/examples/ler_cli.rb +79 -0
  71. data/examples/ler_demo_complete.rb +276 -0
  72. data/examples/ler_query.rb +91 -0
  73. data/examples/ler_query_examples.rb +305 -0
  74. data/examples/ler_stats.rb +81 -0
  75. data/examples/phase3_demo.rb +159 -0
  76. data/examples/query_demo_simple.rb +131 -0
  77. data/expressir.gemspec +2 -0
  78. data/lib/expressir/cli.rb +12 -4
  79. data/lib/expressir/commands/manifest.rb +427 -0
  80. data/lib/expressir/commands/package.rb +1274 -0
  81. data/lib/expressir/commands/validate.rb +70 -37
  82. data/lib/expressir/commands/validate_ascii.rb +607 -0
  83. data/lib/expressir/commands/validate_load.rb +88 -0
  84. data/lib/expressir/express/formatter.rb +5 -1
  85. data/lib/expressir/express/formatters/remark_item_formatter.rb +25 -0
  86. data/lib/expressir/express/parser.rb +33 -0
  87. data/lib/expressir/manifest/resolver.rb +213 -0
  88. data/lib/expressir/manifest/validator.rb +195 -0
  89. data/lib/expressir/model/declarations/entity.rb +6 -0
  90. data/lib/expressir/model/dependency_resolver.rb +270 -0
  91. data/lib/expressir/model/indexes/entity_index.rb +103 -0
  92. data/lib/expressir/model/indexes/reference_index.rb +148 -0
  93. data/lib/expressir/model/indexes/type_index.rb +149 -0
  94. data/lib/expressir/model/interface_validator.rb +384 -0
  95. data/lib/expressir/model/repository.rb +400 -5
  96. data/lib/expressir/model/repository_validator.rb +295 -0
  97. data/lib/expressir/model/search_engine.rb +525 -0
  98. data/lib/expressir/model.rb +4 -94
  99. data/lib/expressir/package/builder.rb +200 -0
  100. data/lib/expressir/package/metadata.rb +81 -0
  101. data/lib/expressir/package/reader.rb +165 -0
  102. data/lib/expressir/schema_manifest.rb +11 -1
  103. data/lib/expressir/version.rb +1 -1
  104. data/lib/expressir.rb +15 -2
  105. metadata +114 -4
  106. data/docs/benchmarking.adoc +0 -107
  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.