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
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expressir
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.30
4
+ version: 2.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-16 00:00:00.000000000 Z
11
+ date: 2025-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: paint
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: parslet
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '1.11'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubyzip
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.3'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.3'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: table_tennis
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +188,8 @@ extensions: []
160
188
  extra_rdoc_files: []
161
189
  files:
162
190
  - ".github/workflows/codeql.yml"
191
+ - ".github/workflows/docs.yml"
192
+ - ".github/workflows/links.yml"
163
193
  - ".github/workflows/rake.yml"
164
194
  - ".github/workflows/release.yml"
165
195
  - ".github/workflows/stress.yml"
@@ -175,8 +205,71 @@ files:
175
205
  - bin/console
176
206
  - bin/rspec
177
207
  - bin/setup
178
- - docs/benchmarking.adoc
179
- - docs/liquid_drops.adoc
208
+ - docs/Gemfile
209
+ - docs/_config.yml
210
+ - docs/_guides/changes/changes-format.adoc
211
+ - docs/_guides/changes/importing-eengine.adoc
212
+ - docs/_guides/changes/index.adoc
213
+ - docs/_guides/changes/programmatic-usage.adoc
214
+ - docs/_guides/changes/validating-changes.adoc
215
+ - docs/_guides/cli/benchmark-performance.adoc
216
+ - docs/_guides/cli/coverage-analysis.adoc
217
+ - docs/_guides/cli/format-schemas.adoc
218
+ - docs/_guides/cli/index.adoc
219
+ - docs/_guides/cli/managing-changes.adoc
220
+ - docs/_guides/cli/validate-ascii.adoc
221
+ - docs/_guides/cli/validate-schemas.adoc
222
+ - docs/_guides/index.adoc
223
+ - docs/_guides/ler/creating-packages.adoc
224
+ - docs/_guides/ler/index.adoc
225
+ - docs/_guides/ler/loading-packages.adoc
226
+ - docs/_guides/ler/package-formats.adoc
227
+ - docs/_guides/ler/querying-packages.adoc
228
+ - docs/_guides/ler/validating-packages.adoc
229
+ - docs/_guides/liquid/basic-templates.adoc
230
+ - docs/_guides/liquid/documentation-generation.adoc
231
+ - docs/_guides/liquid/drops-reference.adoc
232
+ - docs/_guides/liquid/filters-and-tags.adoc
233
+ - docs/_guides/liquid/index.adoc
234
+ - docs/_guides/manifests/creating-manifests.adoc
235
+ - docs/_guides/manifests/index.adoc
236
+ - docs/_guides/manifests/resolving-manifests.adoc
237
+ - docs/_guides/manifests/validating-manifests.adoc
238
+ - docs/_guides/ruby-api/formatting-schemas.adoc
239
+ - docs/_guides/ruby-api/index.adoc
240
+ - docs/_guides/ruby-api/parsing-files.adoc
241
+ - docs/_guides/ruby-api/search-engine.adoc
242
+ - docs/_guides/ruby-api/working-with-repository.adoc
243
+ - docs/_pages/data-model.adoc
244
+ - docs/_pages/express-language.adoc
245
+ - docs/_pages/getting-started.adoc
246
+ - docs/_pages/index.adoc
247
+ - docs/_pages/introduction.adoc
248
+ - docs/_pages/ler-packages.adoc
249
+ - docs/_pages/parsers.adoc
250
+ - docs/_pages/schema-manifests.adoc
251
+ - docs/_references/index.adoc
252
+ - docs/_tutorials/creating-ler-package.adoc
253
+ - docs/_tutorials/documentation-coverage.adoc
254
+ - docs/_tutorials/index.adoc
255
+ - docs/_tutorials/liquid-templates.adoc
256
+ - docs/_tutorials/parsing-your-first-schema.adoc
257
+ - docs/_tutorials/querying-schemas.adoc
258
+ - docs/_tutorials/working-with-multiple-schemas.adoc
259
+ - docs/index.adoc
260
+ - docs/lychee.toml
261
+ - examples/demo_ler_usage.sh
262
+ - examples/ler/README.md
263
+ - examples/ler/simple_example.ler
264
+ - examples/ler/simple_schema.exp
265
+ - examples/ler_build.rb
266
+ - examples/ler_cli.rb
267
+ - examples/ler_demo_complete.rb
268
+ - examples/ler_query.rb
269
+ - examples/ler_query_examples.rb
270
+ - examples/ler_stats.rb
271
+ - examples/phase3_demo.rb
272
+ - examples/query_demo_simple.rb
180
273
  - exe/expressir
181
274
  - exe/expressir-format
182
275
  - exe/expressir-format-test
@@ -198,7 +291,11 @@ files:
198
291
  - lib/expressir/commands/clean.rb
199
292
  - lib/expressir/commands/coverage.rb
200
293
  - lib/expressir/commands/format.rb
294
+ - lib/expressir/commands/manifest.rb
295
+ - lib/expressir/commands/package.rb
201
296
  - lib/expressir/commands/validate.rb
297
+ - lib/expressir/commands/validate_ascii.rb
298
+ - lib/expressir/commands/validate_load.rb
202
299
  - lib/expressir/commands/version.rb
203
300
  - lib/expressir/config.rb
204
301
  - lib/expressir/coverage.rb
@@ -210,6 +307,7 @@ files:
210
307
  - lib/expressir/express/cache.rb
211
308
  - lib/expressir/express/error.rb
212
309
  - lib/expressir/express/formatter.rb
310
+ - lib/expressir/express/formatters/remark_item_formatter.rb
213
311
  - lib/expressir/express/hyperlink_formatter.rb
214
312
  - lib/expressir/express/model_visitor.rb
215
313
  - lib/expressir/express/parser.rb
@@ -217,6 +315,8 @@ files:
217
315
  - lib/expressir/express/schema_head_formatter.rb
218
316
  - lib/expressir/express/visitor.rb
219
317
  - lib/expressir/liquid.rb
318
+ - lib/expressir/manifest/resolver.rb
319
+ - lib/expressir/manifest/validator.rb
220
320
  - lib/expressir/model.rb
221
321
  - lib/expressir/model/cache.rb
222
322
  - lib/expressir/model/data_types/aggregate.rb
@@ -258,6 +358,7 @@ files:
258
358
  - lib/expressir/model/declarations/unique_rule.rb
259
359
  - lib/expressir/model/declarations/variable.rb
260
360
  - lib/expressir/model/declarations/where_rule.rb
361
+ - lib/expressir/model/dependency_resolver.rb
261
362
  - lib/expressir/model/expressions/aggregate_initializer.rb
262
363
  - lib/expressir/model/expressions/aggregate_initializer_item.rb
263
364
  - lib/expressir/model/expressions/binary_expression.rb
@@ -267,6 +368,10 @@ files:
267
368
  - lib/expressir/model/expressions/query_expression.rb
268
369
  - lib/expressir/model/expressions/unary_expression.rb
269
370
  - lib/expressir/model/identifier.rb
371
+ - lib/expressir/model/indexes/entity_index.rb
372
+ - lib/expressir/model/indexes/reference_index.rb
373
+ - lib/expressir/model/indexes/type_index.rb
374
+ - lib/expressir/model/interface_validator.rb
270
375
  - lib/expressir/model/literals/binary.rb
271
376
  - lib/expressir/model/literals/integer.rb
272
377
  - lib/expressir/model/literals/logical.rb
@@ -278,6 +383,8 @@ files:
278
383
  - lib/expressir/model/references/index_reference.rb
279
384
  - lib/expressir/model/references/simple_reference.rb
280
385
  - lib/expressir/model/repository.rb
386
+ - lib/expressir/model/repository_validator.rb
387
+ - lib/expressir/model/search_engine.rb
281
388
  - lib/expressir/model/statements/alias.rb
282
389
  - lib/expressir/model/statements/assignment.rb
283
390
  - lib/expressir/model/statements/case.rb
@@ -292,6 +399,9 @@ files:
292
399
  - lib/expressir/model/statements/skip.rb
293
400
  - lib/expressir/model/supertype_expressions/binary_supertype_expression.rb
294
401
  - lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb
402
+ - lib/expressir/package/builder.rb
403
+ - lib/expressir/package/metadata.rb
404
+ - lib/expressir/package/reader.rb
295
405
  - lib/expressir/schema_manifest.rb
296
406
  - lib/expressir/schema_manifest_entry.rb
297
407
  - lib/expressir/version.rb
@@ -1,107 +0,0 @@
1
- = Benchmarking schema loading in Expressir
2
-
3
- Expressir provides built-in benchmarking capabilities for measuring schema
4
- loading performance. This is particularly useful for large schemas or when
5
- optimizing performance.
6
-
7
- == Activating benchmark mode
8
-
9
- Benchmark mode can be activated using environment variables:
10
-
11
- [source,bash]
12
- ----
13
- # Basic benchmarking
14
- EXPRESSIR_BENCHMARK=true ruby your_script.rb
15
-
16
- # Verbose output with timing for each file
17
- EXPRESSIR_BENCHMARK=true EXPRESSIR_BENCHMARK_VERBOSE=true ruby your_script.rb
18
-
19
- # Use benchmark-ips for more detailed statistics
20
- EXPRESSIR_BENCHMARK=true EXPRESSIR_BENCHMARK_IPS=true ruby your_script.rb
21
-
22
- # Save benchmark results to file
23
- EXPRESSIR_BENCHMARK=true EXPRESSIR_BENCHMARK_SAVE=true ruby your_script.rb
24
- ----
25
-
26
- == Environment variables
27
-
28
- The following environment variables control benchmarking:
29
-
30
- |===
31
- | Variable | Description | Default
32
-
33
- | `EXPRESSIR_BENCHMARK`
34
- | Enable benchmarking mode
35
- | `false`
36
-
37
- | `EXPRESSIR_BENCHMARK_IPS`
38
- | Use benchmark-ips for detailed statistics
39
- | `false`
40
-
41
- | `EXPRESSIR_BENCHMARK_VERBOSE`
42
- | Show verbose output for benchmarking
43
- | `false`
44
-
45
- | `EXPRESSIR_BENCHMARK_SAVE`
46
- | Save benchmark results to file
47
- | `false`
48
-
49
- | `EXPRESSIR_BENCHMARK_ITERATIONS`
50
- | Number of iterations for benchmark-ips
51
- | `3`
52
-
53
- | `EXPRESSIR_BENCHMARK_WARMUP`
54
- | Warmup time for benchmark-ips in seconds
55
- | `1`
56
-
57
- | `EXPRESSIR_BENCHMARK_PARALLEL`
58
- | Enable parallel processing (future feature)
59
- | `false`
60
- |===
61
-
62
- == Sample usage
63
-
64
- A sample benchmark script is provided at
65
- `spec/benchmarks/schema_loading_benchmark.rb`. You can run it with various
66
- configurations to see the benchmarking in action:
67
-
68
- [source,bash]
69
- ----
70
- # Basic benchmarking
71
- EXPRESSIR_BENCHMARK=true ruby spec/benchmarks/schema_loading_benchmark.rb
72
-
73
- # Detailed IPS benchmarking
74
- EXPRESSIR_BENCHMARK=true EXPRESSIR_BENCHMARK_IPS=true ruby spec/benchmarks/schema_loading_benchmark.rb
75
- ----
76
-
77
- == Programmatic access
78
-
79
- You can also access benchmarking functionality programmatically:
80
-
81
- [source,ruby]
82
- ----
83
- require 'expressir'
84
-
85
- # Check if benchmarking is enabled
86
- if Expressir.configuration.benchmark_enabled?
87
- puts "Benchmarking is active"
88
- end
89
-
90
- # Measure a specific operation
91
- result = Expressir::Benchmark.measure_file("path/to/file.exp") do
92
- # Code to benchmark
93
- do_something()
94
- end
95
-
96
- # Measure a collection of files
97
- results = Expressir::Benchmark.measure_collection(files) do |file|
98
- # Process each file
99
- process_file(file)
100
- end
101
- ----
102
-
103
- == Future features
104
-
105
- Future versions of Expressir will include parallel schema loading capabilities
106
- that can be benchmarked using the `EXPRESSIR_BENCHMARK_PARALLEL=true`
107
- environment variable.