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,414 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Getting Started
|
|
3
|
+
nav_order: 3
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
== Getting Started with Expressir
|
|
7
|
+
|
|
8
|
+
=== Purpose
|
|
9
|
+
|
|
10
|
+
This guide will help you install Expressir and take your first steps with both the command-line interface (CLI) and Ruby API. Within minutes, you'll be parsing EXPRESS schemas and exploring the results.
|
|
11
|
+
|
|
12
|
+
=== References
|
|
13
|
+
|
|
14
|
+
* link:introduction.html[Introduction] - What is Expressir?
|
|
15
|
+
* link:../tutorials/parsing-your-first-schema.html[Tutorial: Parsing Your First Schema] - Hands-on tutorial
|
|
16
|
+
* link:../guides/cli/[CLI Guides] - Detailed CLI documentation
|
|
17
|
+
* link:../guides/ruby-api/[Ruby API Guides] - Advanced Ruby usage
|
|
18
|
+
|
|
19
|
+
=== Concepts
|
|
20
|
+
|
|
21
|
+
Gem:: A Ruby library package that can be installed and managed with RubyGems
|
|
22
|
+
Bundle:: Ruby's dependency manager (Bundler) for managing gem versions
|
|
23
|
+
CLI:: Command-Line Interface - programs run from the terminal
|
|
24
|
+
Repository:: Expressir's container for parsed schemas
|
|
25
|
+
Schema:: An EXPRESS data model containing entities, types, and functions
|
|
26
|
+
|
|
27
|
+
=== Prerequisites
|
|
28
|
+
|
|
29
|
+
Before installing Expressir, ensure you have:
|
|
30
|
+
|
|
31
|
+
**Ruby 2.7 or later**::
|
|
32
|
+
Check your Ruby version:
|
|
33
|
+
+
|
|
34
|
+
[source,sh]
|
|
35
|
+
----
|
|
36
|
+
ruby --version
|
|
37
|
+
----
|
|
38
|
+
+
|
|
39
|
+
If you need to install Ruby, visit https://www.ruby-lang.org/en/documentation/installation/[ruby-lang.org/en/documentation/installation]
|
|
40
|
+
|
|
41
|
+
**RubyGems**::
|
|
42
|
+
Comes with Ruby by default. Verify with:
|
|
43
|
+
+
|
|
44
|
+
[source,sh]
|
|
45
|
+
----
|
|
46
|
+
gem --version
|
|
47
|
+
----
|
|
48
|
+
|
|
49
|
+
**Bundler (recommended)**::
|
|
50
|
+
For managing dependencies in your projects:
|
|
51
|
+
+
|
|
52
|
+
[source,sh]
|
|
53
|
+
----
|
|
54
|
+
gem install bundler
|
|
55
|
+
----
|
|
56
|
+
|
|
57
|
+
=== Installation
|
|
58
|
+
|
|
59
|
+
There are two ways to install Expressir:
|
|
60
|
+
|
|
61
|
+
==== Option 1: System-wide Installation
|
|
62
|
+
|
|
63
|
+
Install Expressir globally on your system:
|
|
64
|
+
|
|
65
|
+
[source,sh]
|
|
66
|
+
----
|
|
67
|
+
gem install expressir
|
|
68
|
+
----
|
|
69
|
+
|
|
70
|
+
This makes the `expressir` command available system-wide.
|
|
71
|
+
|
|
72
|
+
==== Option 2: Project-specific Installation (Recommended)
|
|
73
|
+
|
|
74
|
+
For use in a specific project, add Expressir to your `Gemfile`:
|
|
75
|
+
|
|
76
|
+
[source,ruby]
|
|
77
|
+
----
|
|
78
|
+
# Gemfile
|
|
79
|
+
source 'https://rubygems.org'
|
|
80
|
+
|
|
81
|
+
gem 'expressir'
|
|
82
|
+
----
|
|
83
|
+
|
|
84
|
+
Then install:
|
|
85
|
+
|
|
86
|
+
[source,sh]
|
|
87
|
+
----
|
|
88
|
+
bundle install
|
|
89
|
+
----
|
|
90
|
+
|
|
91
|
+
This approach is recommended because it:
|
|
92
|
+
|
|
93
|
+
* Locks specific versions for reproducibility
|
|
94
|
+
* Isolates dependencies per project
|
|
95
|
+
* Works well with CI/CD systems
|
|
96
|
+
|
|
97
|
+
=== Verify Installation
|
|
98
|
+
|
|
99
|
+
Confirm Expressir is installed correctly:
|
|
100
|
+
|
|
101
|
+
[source,sh]
|
|
102
|
+
----
|
|
103
|
+
# Check version
|
|
104
|
+
expressir version
|
|
105
|
+
|
|
106
|
+
# View available commands
|
|
107
|
+
expressir help
|
|
108
|
+
----
|
|
109
|
+
|
|
110
|
+
You should see output listing Expressir's version and available commands.
|
|
111
|
+
|
|
112
|
+
=== First Steps with CLI
|
|
113
|
+
|
|
114
|
+
Let's parse your first EXPRESS schema using the command line.
|
|
115
|
+
|
|
116
|
+
==== Create a Sample Schema
|
|
117
|
+
|
|
118
|
+
Create a simple EXPRESS file named `example.exp`:
|
|
119
|
+
|
|
120
|
+
[source,express]
|
|
121
|
+
----
|
|
122
|
+
SCHEMA example_schema;
|
|
123
|
+
|
|
124
|
+
ENTITY person;
|
|
125
|
+
name : STRING;
|
|
126
|
+
age : INTEGER;
|
|
127
|
+
END_ENTITY;
|
|
128
|
+
|
|
129
|
+
ENTITY organization;
|
|
130
|
+
org_name : STRING;
|
|
131
|
+
employees : SET [0:?] OF person;
|
|
132
|
+
END_ENTITY;
|
|
133
|
+
|
|
134
|
+
END_SCHEMA;
|
|
135
|
+
----
|
|
136
|
+
|
|
137
|
+
==== Parse and Format the Schema
|
|
138
|
+
|
|
139
|
+
Use the `format` command to parse and pretty-print the schema:
|
|
140
|
+
|
|
141
|
+
[source,sh]
|
|
142
|
+
----
|
|
143
|
+
expressir format example.exp
|
|
144
|
+
----
|
|
145
|
+
|
|
146
|
+
This will output the formatted schema to your terminal, confirming that:
|
|
147
|
+
|
|
148
|
+
1. The schema parses correctly
|
|
149
|
+
2. Expressir understands the structure
|
|
150
|
+
3. The formatting engine works
|
|
151
|
+
|
|
152
|
+
==== Validate the Schema
|
|
153
|
+
|
|
154
|
+
Check if the schema is valid:
|
|
155
|
+
|
|
156
|
+
[source,sh]
|
|
157
|
+
----
|
|
158
|
+
expressir validate example.exp
|
|
159
|
+
----
|
|
160
|
+
|
|
161
|
+
A valid schema should display: "Validation passed for all EXPRESS schemas."
|
|
162
|
+
|
|
163
|
+
==== Explore Other Commands
|
|
164
|
+
|
|
165
|
+
Try these commands to explore Expressir's capabilities:
|
|
166
|
+
|
|
167
|
+
[source,sh]
|
|
168
|
+
----
|
|
169
|
+
# View all available commands
|
|
170
|
+
expressir help
|
|
171
|
+
|
|
172
|
+
# Get help for a specific command
|
|
173
|
+
expressir help format
|
|
174
|
+
|
|
175
|
+
# Check version
|
|
176
|
+
expressir version
|
|
177
|
+
----
|
|
178
|
+
|
|
179
|
+
=== First Steps with Ruby API
|
|
180
|
+
|
|
181
|
+
Now let's use Expressir programmatically from Ruby.
|
|
182
|
+
|
|
183
|
+
==== Basic Parsing Example
|
|
184
|
+
|
|
185
|
+
Create a Ruby script named `parse_example.rb`:
|
|
186
|
+
|
|
187
|
+
[source,ruby]
|
|
188
|
+
----
|
|
189
|
+
require 'expressir'
|
|
190
|
+
|
|
191
|
+
# Parse an EXPRESS file
|
|
192
|
+
repository = Expressir::Express::Parser.from_file('example.exp')
|
|
193
|
+
|
|
194
|
+
# Access the parsed schema
|
|
195
|
+
schema = repository.schemas.first
|
|
196
|
+
puts "Schema name: #{schema.id}"
|
|
197
|
+
puts "Number of entities: #{schema.entities.length}"
|
|
198
|
+
|
|
199
|
+
# List all entities
|
|
200
|
+
schema.entities.each do |entity|
|
|
201
|
+
puts " Entity: #{entity.id}"
|
|
202
|
+
entity.attributes.each do |attr|
|
|
203
|
+
puts " - #{attr.id}: #{attr.type}"
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
----
|
|
207
|
+
|
|
208
|
+
Run it:
|
|
209
|
+
|
|
210
|
+
[source,sh]
|
|
211
|
+
----
|
|
212
|
+
ruby parse_example.rb
|
|
213
|
+
----
|
|
214
|
+
|
|
215
|
+
Expected output:
|
|
216
|
+
|
|
217
|
+
[source]
|
|
218
|
+
----
|
|
219
|
+
Schema name: example_schema
|
|
220
|
+
Number of entities: 2
|
|
221
|
+
Entity: person
|
|
222
|
+
- name: STRING
|
|
223
|
+
- age: INTEGER
|
|
224
|
+
Entity: organization
|
|
225
|
+
- org_name: STRING
|
|
226
|
+
- employees: SET [0:?] OF person
|
|
227
|
+
----
|
|
228
|
+
|
|
229
|
+
==== Interactive Exploration with IRB
|
|
230
|
+
|
|
231
|
+
You can also explore Expressir interactively:
|
|
232
|
+
|
|
233
|
+
[source,sh]
|
|
234
|
+
----
|
|
235
|
+
irb
|
|
236
|
+
----
|
|
237
|
+
|
|
238
|
+
Then in the IRB session:
|
|
239
|
+
|
|
240
|
+
[source,ruby]
|
|
241
|
+
----
|
|
242
|
+
require 'expressir'
|
|
243
|
+
|
|
244
|
+
# Parse a file
|
|
245
|
+
repo = Expressir::Express::Parser.from_file('example.exp')
|
|
246
|
+
|
|
247
|
+
# Explore the structure
|
|
248
|
+
repo.schemas.first.entities.first
|
|
249
|
+
# => Returns the first entity
|
|
250
|
+
|
|
251
|
+
# Access attributes
|
|
252
|
+
repo.schemas.first.entities.first.attributes
|
|
253
|
+
# => Returns array of attributes
|
|
254
|
+
----
|
|
255
|
+
|
|
256
|
+
==== Error Handling Example
|
|
257
|
+
|
|
258
|
+
Expressir provides clear error messages when parsing fails:
|
|
259
|
+
|
|
260
|
+
[source,ruby]
|
|
261
|
+
----
|
|
262
|
+
require 'expressir'
|
|
263
|
+
|
|
264
|
+
begin
|
|
265
|
+
repository = Expressir::Express::Parser.from_file('invalid.exp')
|
|
266
|
+
rescue Expressir::Express::Error::SchemaParseFailure => e
|
|
267
|
+
puts "Parse error in #{e.filename}:"
|
|
268
|
+
puts e.message
|
|
269
|
+
puts e.parse_failure_cause.ascii_tree
|
|
270
|
+
end
|
|
271
|
+
----
|
|
272
|
+
|
|
273
|
+
=== Testing Your Installation
|
|
274
|
+
|
|
275
|
+
Run Expressir's test suite to ensure everything works:
|
|
276
|
+
|
|
277
|
+
[source,sh]
|
|
278
|
+
----
|
|
279
|
+
# Clone the repository (if you want to contribute)
|
|
280
|
+
git clone https://github.com/lutaml/expressir.git
|
|
281
|
+
cd expressir
|
|
282
|
+
|
|
283
|
+
# Install dependencies
|
|
284
|
+
bundle install
|
|
285
|
+
|
|
286
|
+
# Run tests
|
|
287
|
+
bundle exec rake
|
|
288
|
+
----
|
|
289
|
+
|
|
290
|
+
All tests should pass, confirming your installation is working correctly.
|
|
291
|
+
|
|
292
|
+
=== Common Issues and Solutions
|
|
293
|
+
|
|
294
|
+
==== "Command not found: expressir"
|
|
295
|
+
|
|
296
|
+
**Problem**: The expressir command isn't in your PATH.
|
|
297
|
+
|
|
298
|
+
**Solutions**:
|
|
299
|
+
|
|
300
|
+
1. If installed with bundler, use: `bundle exec expressir`
|
|
301
|
+
2. Ensure RubyGems bin directory is in PATH:
|
|
302
|
+
+
|
|
303
|
+
[source,sh]
|
|
304
|
+
----
|
|
305
|
+
echo 'export PATH="$HOME/.gem/ruby/X.X.0/bin:$PATH"' >> ~/.bashrc
|
|
306
|
+
source ~/.bashrc
|
|
307
|
+
----
|
|
308
|
+
+
|
|
309
|
+
Replace `X.X` with your Ruby version
|
|
310
|
+
|
|
311
|
+
==== "cannot load such file -- expressir"
|
|
312
|
+
|
|
313
|
+
**Problem**: Expressir gem not found by Ruby.
|
|
314
|
+
|
|
315
|
+
**Solutions**:
|
|
316
|
+
|
|
317
|
+
1. Install the gem: `gem install expressir`
|
|
318
|
+
2. If using Bundler: `bundle install`
|
|
319
|
+
3. Check your Ruby environment: `gem env`
|
|
320
|
+
|
|
321
|
+
==== Parser Errors
|
|
322
|
+
|
|
323
|
+
**Problem**: Schema fails to parse.
|
|
324
|
+
|
|
325
|
+
**Solutions**:
|
|
326
|
+
|
|
327
|
+
1. Verify EXPRESS syntax is valid
|
|
328
|
+
2. Check for special characters or encoding issues
|
|
329
|
+
3. Use `--verbose` flag for detailed error messages
|
|
330
|
+
4. Consult the EXPRESS language specification
|
|
331
|
+
|
|
332
|
+
=== Next Steps
|
|
333
|
+
|
|
334
|
+
Now that you have Expressir installed and working, you can:
|
|
335
|
+
|
|
336
|
+
**Learn by doing**::
|
|
337
|
+
Try the link:../tutorials/parsing-your-first-schema.html[Parsing Your First Schema] tutorial for a comprehensive introduction
|
|
338
|
+
|
|
339
|
+
**Explore CLI commands**::
|
|
340
|
+
Read the link:../guides/cli/[CLI guides] to master command-line usage
|
|
341
|
+
|
|
342
|
+
**Dive into Ruby API**::
|
|
343
|
+
Study the link:../guides/ruby-api/[Ruby API guides] for programmatic control
|
|
344
|
+
|
|
345
|
+
**Understand the model**::
|
|
346
|
+
Learn about link:data-model.html[Expressir's data model] to work with schemas effectively
|
|
347
|
+
|
|
348
|
+
**Work with LER packages**::
|
|
349
|
+
Explore link:ler-packages.html[LER packages] for high-performance schema distribution
|
|
350
|
+
|
|
351
|
+
=== Quick Reference
|
|
352
|
+
|
|
353
|
+
==== Most Used CLI Commands
|
|
354
|
+
|
|
355
|
+
[source,sh]
|
|
356
|
+
----
|
|
357
|
+
# Format (pretty-print) a schema
|
|
358
|
+
expressir format schema.exp
|
|
359
|
+
|
|
360
|
+
# Validate schema
|
|
361
|
+
expressir validate schema.exp
|
|
362
|
+
|
|
363
|
+
# Check documentation coverage
|
|
364
|
+
expressir coverage schema.exp
|
|
365
|
+
|
|
366
|
+
# Show version
|
|
367
|
+
expressir version
|
|
368
|
+
|
|
369
|
+
# Get help
|
|
370
|
+
expressir help [COMMAND]
|
|
371
|
+
----
|
|
372
|
+
|
|
373
|
+
==== Most Used Ruby Methods
|
|
374
|
+
|
|
375
|
+
[source,ruby]
|
|
376
|
+
----
|
|
377
|
+
# Parse a single file
|
|
378
|
+
repo = Expressir::Express::Parser.from_file('schema.exp')
|
|
379
|
+
|
|
380
|
+
# Parse multiple files
|
|
381
|
+
repo = Expressir::Express::Parser.from_files(['schema1.exp', 'schema2.exp'])
|
|
382
|
+
|
|
383
|
+
# Access schemas
|
|
384
|
+
repo.schemas.each { |schema| puts schema.id }
|
|
385
|
+
|
|
386
|
+
# Find entities
|
|
387
|
+
schema.entities.find { |e| e.id == 'person' }
|
|
388
|
+
|
|
389
|
+
# Convert to Liquid drops
|
|
390
|
+
repo_drop = repo.to_liquid
|
|
391
|
+
----
|
|
392
|
+
|
|
393
|
+
=== Getting Help
|
|
394
|
+
|
|
395
|
+
If you encounter issues:
|
|
396
|
+
|
|
397
|
+
**Documentation**::
|
|
398
|
+
Browse the complete link:../[documentation site]
|
|
399
|
+
|
|
400
|
+
**GitHub Issues**::
|
|
401
|
+
https://github.com/lutaml/expressir/issues[Report bugs or request features]
|
|
402
|
+
|
|
403
|
+
**Community**::
|
|
404
|
+
Join discussions and ask questions in GitHub Discussions
|
|
405
|
+
|
|
406
|
+
**Source Code**::
|
|
407
|
+
https://github.com/lutaml/expressir[Explore the code on GitHub]
|
|
408
|
+
|
|
409
|
+
=== Bibliography
|
|
410
|
+
|
|
411
|
+
* https://www.ruby-lang.org/en/documentation/installation/[Ruby Installation Guide] - Installing Ruby on various platforms
|
|
412
|
+
* https://bundler.io/[Bundler Documentation] - Ruby dependency management
|
|
413
|
+
* https://guides.rubygems.org/[RubyGems Guides] - Working with Ruby gems
|
|
414
|
+
* https://github.com/lutaml/expressir[Expressir on GitHub] - Source code and issue tracker
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Core Topics
|
|
3
|
+
nav_order: 2
|
|
4
|
+
has_children: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
= Core Topics
|
|
8
|
+
|
|
9
|
+
This section covers the fundamental concepts and essential information you need to understand and work with Expressir.
|
|
10
|
+
|
|
11
|
+
== What You'll Learn
|
|
12
|
+
|
|
13
|
+
The Core Topics section provides comprehensive coverage of:
|
|
14
|
+
|
|
15
|
+
* *Expressir Fundamentals* - What Expressir is, its architecture, and when to use it
|
|
16
|
+
* *EXPRESS Language* - Understanding the EXPRESS data modeling language
|
|
17
|
+
* *Data Model* - How Expressir represents EXPRESS schemas in Ruby
|
|
18
|
+
* *Parsers* - How Expressir parses different EXPRESS formats
|
|
19
|
+
* *LER Packages* - High-performance schema packaging and distribution
|
|
20
|
+
|
|
21
|
+
== Topics
|
|
22
|
+
|
|
23
|
+
=== link:../introduction.html[Introduction]
|
|
24
|
+
|
|
25
|
+
Learn what Expressir is, its key features, and how it fits into the EXPRESS ecosystem.
|
|
26
|
+
|
|
27
|
+
*Key concepts:*
|
|
28
|
+
|
|
29
|
+
* Purpose and goals
|
|
30
|
+
* Architecture overview
|
|
31
|
+
* When to use Expressir
|
|
32
|
+
* Comparison with other tools
|
|
33
|
+
|
|
34
|
+
=== link:../getting-started.html[Getting Started]
|
|
35
|
+
|
|
36
|
+
Get up and running with Expressir quickly with installation instructions and first steps.
|
|
37
|
+
|
|
38
|
+
*You'll learn:*
|
|
39
|
+
|
|
40
|
+
* How to install Expressir
|
|
41
|
+
* Basic CLI usage
|
|
42
|
+
* Simple Ruby API examples
|
|
43
|
+
* Next steps for learning
|
|
44
|
+
|
|
45
|
+
=== link:../express-language.html[EXPRESS Language]
|
|
46
|
+
|
|
47
|
+
Understand the EXPRESS data modeling language that Expressir parses and processes.
|
|
48
|
+
|
|
49
|
+
*Topics covered:*
|
|
50
|
+
|
|
51
|
+
* EXPRESS language overview
|
|
52
|
+
* ISO 10303-11 background
|
|
53
|
+
* Key concepts (schemas, entities, types)
|
|
54
|
+
* EXPRESS syntax basics
|
|
55
|
+
|
|
56
|
+
=== link:../data-model.html[Data Model]
|
|
57
|
+
|
|
58
|
+
Explore Expressir's Ruby data model that represents EXPRESS schemas.
|
|
59
|
+
|
|
60
|
+
*Learn about:*
|
|
61
|
+
|
|
62
|
+
* Model hierarchy and structure
|
|
63
|
+
* Key classes and their relationships
|
|
64
|
+
* Working with the model programmatically
|
|
65
|
+
* Model traversal patterns
|
|
66
|
+
|
|
67
|
+
=== link:../parsers.html[Parsers]
|
|
68
|
+
|
|
69
|
+
Discover how Expressir parses multiple EXPRESS formats.
|
|
70
|
+
|
|
71
|
+
*Understand:*
|
|
72
|
+
|
|
73
|
+
* Parser architecture
|
|
74
|
+
* Supported formats (EXPRESS, STEPmod, EXPRESS XML)
|
|
75
|
+
* Parsing strategies
|
|
76
|
+
* Error handling and recovery
|
|
77
|
+
|
|
78
|
+
=== link:../ler-packages.html[LER Packages]
|
|
79
|
+
|
|
80
|
+
Learn about LutaML EXPRESS Repository (LER) packages for efficient schema distribution.
|
|
81
|
+
|
|
82
|
+
*Explore:*
|
|
83
|
+
|
|
84
|
+
* What are LER packages?
|
|
85
|
+
* Benefits and use cases
|
|
86
|
+
* Package structure and format
|
|
87
|
+
* Performance advantages
|
|
88
|
+
|
|
89
|
+
== Next Steps
|
|
90
|
+
|
|
91
|
+
After reading the Core Topics:
|
|
92
|
+
|
|
93
|
+
* Try the link:../../tutorials/[Tutorials] for hands-on learning
|
|
94
|
+
* Consult the link:../../guides/[Guides] for specific tasks
|
|
95
|
+
* Reference the link:../../references/[References] for detailed specifications
|
|
96
|
+
|
|
97
|
+
== Prerequisites
|
|
98
|
+
|
|
99
|
+
To get the most from these topics, you should have:
|
|
100
|
+
|
|
101
|
+
* Basic Ruby knowledge
|
|
102
|
+
* Familiarity with command-line tools
|
|
103
|
+
* Some understanding of data modeling concepts (helpful but not required)
|
|
104
|
+
|
|
105
|
+
== Reading Guide
|
|
106
|
+
|
|
107
|
+
We recommend reading the Core Topics in order if you're new to Expressir:
|
|
108
|
+
|
|
109
|
+
. Start with link:../introduction.html[Introduction] to understand what Expressir is
|
|
110
|
+
. Follow link:../getting-started.html[Getting Started] to install and try it
|
|
111
|
+
. Read link:../express-language.html[EXPRESS Language] to understand the domain
|
|
112
|
+
. Study link:../data-model.html[Data Model] to work with schemas programmatically
|
|
113
|
+
. Review link:../parsers.html[Parsers] to understand how parsing works
|
|
114
|
+
. Explore link:../ler-packages.html[LER Packages] for advanced deployment scenarios
|
|
115
|
+
|
|
116
|
+
If you're already familiar with EXPRESS, you can skip directly to link:../data-model.html[Data Model] to understand how Expressir represents schemas in Ruby.
|