expressir 2.2.1 → 2.3.0

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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +253 -81
  4. data/Gemfile +4 -1
  5. data/README.adoc +63 -26
  6. data/benchmark/srl_benchmark.rb +386 -0
  7. data/benchmark/srl_native_benchmark.rb +142 -0
  8. data/benchmark/srl_ruby_benchmark.rb +130 -0
  9. data/expressir.gemspec +3 -2
  10. data/lib/expressir/benchmark.rb +1 -1
  11. data/lib/expressir/changes/item_change.rb +0 -1
  12. data/lib/expressir/changes/mapping_change.rb +0 -1
  13. data/lib/expressir/changes/schema_change.rb +0 -2
  14. data/lib/expressir/changes/version_change.rb +0 -3
  15. data/lib/expressir/changes.rb +5 -6
  16. data/lib/expressir/cli.rb +10 -24
  17. data/lib/expressir/commands/changes.rb +0 -2
  18. data/lib/expressir/commands/changes_import_eengine.rb +0 -3
  19. data/lib/expressir/commands/changes_validate.rb +0 -2
  20. data/lib/expressir/commands/format.rb +1 -1
  21. data/lib/expressir/commands/manifest.rb +0 -7
  22. data/lib/expressir/commands/package.rb +16 -29
  23. data/lib/expressir/commands/validate.rb +0 -2
  24. data/lib/expressir/commands/validate_load.rb +1 -1
  25. data/lib/expressir/commands.rb +20 -0
  26. data/lib/expressir/config.rb +0 -2
  27. data/lib/expressir/coverage.rb +11 -4
  28. data/lib/expressir/eengine/arm_compare_report.rb +1 -4
  29. data/lib/expressir/eengine/changes_section.rb +1 -3
  30. data/lib/expressir/eengine/compare_report.rb +1 -13
  31. data/lib/expressir/eengine/mim_compare_report.rb +1 -4
  32. data/lib/expressir/eengine/modified_object.rb +1 -2
  33. data/lib/expressir/eengine.rb +9 -0
  34. data/lib/expressir/errors.rb +3 -5
  35. data/lib/expressir/express/builder.rb +22 -7
  36. data/lib/expressir/express/builder_registry.rb +411 -0
  37. data/lib/expressir/express/builders/attribute_decl_builder.rb +0 -6
  38. data/lib/expressir/express/builders/built_in_builder.rb +1 -16
  39. data/lib/expressir/express/builders/constant_builder.rb +4 -19
  40. data/lib/expressir/express/builders/declaration_builder.rb +0 -4
  41. data/lib/expressir/express/builders/derive_clause_builder.rb +0 -2
  42. data/lib/expressir/express/builders/derived_attr_builder.rb +0 -2
  43. data/lib/expressir/express/builders/domain_rule_builder.rb +0 -2
  44. data/lib/expressir/express/builders/entity_decl_builder.rb +7 -13
  45. data/lib/expressir/express/builders/explicit_attr_builder.rb +5 -8
  46. data/lib/expressir/express/builders/expression_builder.rb +31 -67
  47. data/lib/expressir/express/builders/function_decl_builder.rb +20 -18
  48. data/lib/expressir/express/builders/interface_builder.rb +0 -20
  49. data/lib/expressir/express/builders/inverse_attr_builder.rb +0 -2
  50. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +0 -6
  51. data/lib/expressir/express/builders/inverse_clause_builder.rb +0 -2
  52. data/lib/expressir/express/builders/literal_builder.rb +1 -15
  53. data/lib/expressir/express/builders/procedure_decl_builder.rb +20 -19
  54. data/lib/expressir/express/builders/qualifier_builder.rb +0 -27
  55. data/lib/expressir/express/builders/reference_builder.rb +1 -10
  56. data/lib/expressir/express/builders/rule_decl_builder.rb +21 -19
  57. data/lib/expressir/express/builders/schema_body_decl_builder.rb +0 -4
  58. data/lib/expressir/express/builders/schema_decl_builder.rb +7 -13
  59. data/lib/expressir/express/builders/schema_version_builder.rb +0 -6
  60. data/lib/expressir/express/builders/simple_id_builder.rb +1 -10
  61. data/lib/expressir/express/builders/statement_builder.rb +4 -32
  62. data/lib/expressir/express/builders/subtype_constraint_builder.rb +6 -30
  63. data/lib/expressir/express/builders/syntax_builder.rb +60 -7
  64. data/lib/expressir/express/builders/type_builder.rb +3 -45
  65. data/lib/expressir/express/builders/type_decl_builder.rb +1 -7
  66. data/lib/expressir/express/builders/unique_clause_builder.rb +1 -3
  67. data/lib/expressir/express/builders/unique_rule_builder.rb +0 -2
  68. data/lib/expressir/express/builders/where_clause_builder.rb +1 -3
  69. data/lib/expressir/express/builders.rb +47 -35
  70. data/lib/expressir/express/error.rb +0 -3
  71. data/lib/expressir/express/formatter.rb +17 -19
  72. data/lib/expressir/express/formatters/data_types_formatter.rb +295 -293
  73. data/lib/expressir/express/formatters/declarations_formatter.rb +617 -615
  74. data/lib/expressir/express/formatters/expressions_formatter.rb +146 -144
  75. data/lib/expressir/express/formatters/literals_formatter.rb +35 -33
  76. data/lib/expressir/express/formatters/references_formatter.rb +34 -32
  77. data/lib/expressir/express/formatters/remark_formatter.rb +176 -209
  78. data/lib/expressir/express/formatters/remark_item_formatter.rb +18 -16
  79. data/lib/expressir/express/formatters/statements_formatter.rb +190 -188
  80. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +41 -39
  81. data/lib/expressir/express/formatters.rb +22 -0
  82. data/lib/expressir/express/parser.rb +40 -41
  83. data/lib/expressir/express/pretty_formatter.rb +68 -47
  84. data/lib/expressir/express/remark_attacher.rb +210 -147
  85. data/lib/expressir/express/streaming_builder.rb +0 -3
  86. data/lib/expressir/express/transformer/remark_handling.rb +1 -2
  87. data/lib/expressir/express.rb +29 -0
  88. data/lib/expressir/manifest/resolver.rb +0 -3
  89. data/lib/expressir/manifest/validator.rb +0 -3
  90. data/lib/expressir/manifest.rb +6 -0
  91. data/lib/expressir/model/cache.rb +1 -1
  92. data/lib/expressir/model/concerns.rb +19 -0
  93. data/lib/expressir/model/data_types/aggregate.rb +1 -1
  94. data/lib/expressir/model/data_types/array.rb +1 -1
  95. data/lib/expressir/model/data_types/bag.rb +1 -1
  96. data/lib/expressir/model/data_types/binary.rb +1 -1
  97. data/lib/expressir/model/data_types/boolean.rb +1 -1
  98. data/lib/expressir/model/data_types/enumeration.rb +1 -1
  99. data/lib/expressir/model/data_types/enumeration_item.rb +1 -1
  100. data/lib/expressir/model/data_types/generic.rb +1 -1
  101. data/lib/expressir/model/data_types/generic_entity.rb +1 -1
  102. data/lib/expressir/model/data_types/integer.rb +1 -1
  103. data/lib/expressir/model/data_types/list.rb +1 -1
  104. data/lib/expressir/model/data_types/logical.rb +1 -1
  105. data/lib/expressir/model/data_types/number.rb +1 -1
  106. data/lib/expressir/model/data_types/real.rb +1 -1
  107. data/lib/expressir/model/data_types/select.rb +1 -1
  108. data/lib/expressir/model/data_types/set.rb +1 -1
  109. data/lib/expressir/model/data_types/string.rb +1 -1
  110. data/lib/expressir/model/data_types.rb +25 -0
  111. data/lib/expressir/model/declarations/attribute.rb +1 -1
  112. data/lib/expressir/model/declarations/constant.rb +1 -1
  113. data/lib/expressir/model/declarations/derived_attribute.rb +1 -1
  114. data/lib/expressir/model/declarations/entity.rb +4 -1
  115. data/lib/expressir/model/declarations/function.rb +3 -1
  116. data/lib/expressir/model/declarations/informal_proposition_rule.rb +2 -1
  117. data/lib/expressir/model/declarations/interface.rb +1 -1
  118. data/lib/expressir/model/declarations/interface_item.rb +1 -1
  119. data/lib/expressir/model/declarations/interfaced_item.rb +1 -1
  120. data/lib/expressir/model/declarations/inverse_attribute.rb +1 -1
  121. data/lib/expressir/model/declarations/parameter.rb +1 -1
  122. data/lib/expressir/model/declarations/procedure.rb +3 -1
  123. data/lib/expressir/model/declarations/remark_item.rb +1 -1
  124. data/lib/expressir/model/declarations/rule.rb +4 -1
  125. data/lib/expressir/model/declarations/schema.rb +2 -1
  126. data/lib/expressir/model/declarations/schema_version.rb +1 -1
  127. data/lib/expressir/model/declarations/schema_version_item.rb +1 -1
  128. data/lib/expressir/model/declarations/subtype_constraint.rb +1 -1
  129. data/lib/expressir/model/declarations/type.rb +4 -1
  130. data/lib/expressir/model/declarations/unique_rule.rb +1 -1
  131. data/lib/expressir/model/declarations/variable.rb +1 -1
  132. data/lib/expressir/model/declarations/where_rule.rb +1 -1
  133. data/lib/expressir/model/declarations.rb +31 -0
  134. data/lib/expressir/model/dependency_resolver.rb +0 -2
  135. data/lib/expressir/model/exp_file.rb +38 -0
  136. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  137. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +1 -1
  138. data/lib/expressir/model/expressions/binary_expression.rb +1 -1
  139. data/lib/expressir/model/expressions/entity_constructor.rb +1 -1
  140. data/lib/expressir/model/expressions/function_call.rb +1 -1
  141. data/lib/expressir/model/expressions/interval.rb +1 -1
  142. data/lib/expressir/model/expressions/query_expression.rb +1 -1
  143. data/lib/expressir/model/expressions/unary_expression.rb +1 -1
  144. data/lib/expressir/model/expressions.rb +18 -0
  145. data/lib/expressir/model/identifier.rb +5 -1
  146. data/lib/expressir/model/indexes.rb +11 -0
  147. data/lib/expressir/model/literals/binary.rb +1 -1
  148. data/lib/expressir/model/literals/integer.rb +1 -1
  149. data/lib/expressir/model/literals/logical.rb +1 -1
  150. data/lib/expressir/model/literals/real.rb +1 -1
  151. data/lib/expressir/model/literals/string.rb +1 -1
  152. data/lib/expressir/model/literals.rb +13 -0
  153. data/lib/expressir/model/model_element.rb +7 -15
  154. data/lib/expressir/model/references/attribute_reference.rb +1 -1
  155. data/lib/expressir/model/references/group_reference.rb +1 -1
  156. data/lib/expressir/model/references/index_reference.rb +1 -1
  157. data/lib/expressir/model/references/simple_reference.rb +1 -1
  158. data/lib/expressir/model/references.rb +12 -0
  159. data/lib/expressir/model/remark_info.rb +1 -7
  160. data/lib/expressir/model/repository.rb +72 -36
  161. data/lib/expressir/model/repository_validator.rb +0 -2
  162. data/lib/expressir/model/search_engine.rb +6 -30
  163. data/lib/expressir/model/statements/alias.rb +1 -1
  164. data/lib/expressir/model/statements/assignment.rb +1 -1
  165. data/lib/expressir/model/statements/case.rb +1 -1
  166. data/lib/expressir/model/statements/case_action.rb +1 -1
  167. data/lib/expressir/model/statements/compound.rb +1 -1
  168. data/lib/expressir/model/statements/escape.rb +1 -1
  169. data/lib/expressir/model/statements/if.rb +1 -1
  170. data/lib/expressir/model/statements/null.rb +1 -1
  171. data/lib/expressir/model/statements/procedure_call.rb +1 -1
  172. data/lib/expressir/model/statements/repeat.rb +1 -1
  173. data/lib/expressir/model/statements/return.rb +1 -1
  174. data/lib/expressir/model/statements/skip.rb +1 -1
  175. data/lib/expressir/model/statements.rb +20 -0
  176. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +1 -1
  177. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +1 -1
  178. data/lib/expressir/model/supertype_expressions.rb +12 -0
  179. data/lib/expressir/model.rb +28 -4
  180. data/lib/expressir/package/builder.rb +33 -4
  181. data/lib/expressir/package/metadata.rb +0 -1
  182. data/lib/expressir/package/reader.rb +0 -1
  183. data/lib/expressir/package.rb +8 -0
  184. data/lib/expressir/schema_manifest.rb +5 -6
  185. data/lib/expressir/schema_manifest_entry.rb +3 -4
  186. data/lib/expressir/transformer.rb +7 -0
  187. data/lib/expressir/version.rb +1 -1
  188. data/lib/expressir.rb +23 -171
  189. metadata +49 -9
  190. data/lib/expressir/express/builders/token_builder.rb +0 -15
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.2.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-13 00:00:00.000000000 Z
11
+ date: 2026-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: lutaml-model
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 0.8.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 0.8.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: moxml
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,34 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.1'
131
+ version: 1.3.7
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 1.3.7
132
135
  type: :runtime
133
136
  prerelease: false
134
137
  version_requirements: !ruby/object:Gem::Requirement
135
138
  requirements:
136
139
  - - "~>"
137
140
  - !ruby/object:Gem::Version
138
- version: '1.1'
141
+ version: 1.3.7
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 1.3.7
145
+ - !ruby/object:Gem::Dependency
146
+ name: nokogiri
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
139
159
  - !ruby/object:Gem::Dependency
140
160
  name: ruby-progressbar
141
161
  requirement: !ruby/object:Gem::Requirement
@@ -216,6 +236,9 @@ files:
216
236
  - Gemfile
217
237
  - README.adoc
218
238
  - Rakefile
239
+ - benchmark/srl_benchmark.rb
240
+ - benchmark/srl_native_benchmark.rb
241
+ - benchmark/srl_ruby_benchmark.rb
219
242
  - bin/console
220
243
  - bin/rspec
221
244
  - bin/setup
@@ -297,6 +320,7 @@ files:
297
320
  - lib/expressir/changes/schema_change.rb
298
321
  - lib/expressir/changes/version_change.rb
299
322
  - lib/expressir/cli.rb
323
+ - lib/expressir/commands.rb
300
324
  - lib/expressir/commands/base.rb
301
325
  - lib/expressir/commands/benchmark.rb
302
326
  - lib/expressir/commands/benchmark_cache.rb
@@ -314,13 +338,16 @@ files:
314
338
  - lib/expressir/commands/version.rb
315
339
  - lib/expressir/config.rb
316
340
  - lib/expressir/coverage.rb
341
+ - lib/expressir/eengine.rb
317
342
  - lib/expressir/eengine/arm_compare_report.rb
318
343
  - lib/expressir/eengine/changes_section.rb
319
344
  - lib/expressir/eengine/compare_report.rb
320
345
  - lib/expressir/eengine/mim_compare_report.rb
321
346
  - lib/expressir/eengine/modified_object.rb
322
347
  - lib/expressir/errors.rb
348
+ - lib/expressir/express.rb
323
349
  - lib/expressir/express/builder.rb
350
+ - lib/expressir/express/builder_registry.rb
324
351
  - lib/expressir/express/builders.rb
325
352
  - lib/expressir/express/builders/attribute_decl_builder.rb
326
353
  - lib/expressir/express/builders/built_in_builder.rb
@@ -350,7 +377,6 @@ files:
350
377
  - lib/expressir/express/builders/statement_builder.rb
351
378
  - lib/expressir/express/builders/subtype_constraint_builder.rb
352
379
  - lib/expressir/express/builders/syntax_builder.rb
353
- - lib/expressir/express/builders/token_builder.rb
354
380
  - lib/expressir/express/builders/type_builder.rb
355
381
  - lib/expressir/express/builders/type_decl_builder.rb
356
382
  - lib/expressir/express/builders/unique_clause_builder.rb
@@ -359,6 +385,7 @@ files:
359
385
  - lib/expressir/express/cache.rb
360
386
  - lib/expressir/express/error.rb
361
387
  - lib/expressir/express/formatter.rb
388
+ - lib/expressir/express/formatters.rb
362
389
  - lib/expressir/express/formatters/data_types_formatter.rb
363
390
  - lib/expressir/express/formatters/declarations_formatter.rb
364
391
  - lib/expressir/express/formatters/expressions_formatter.rb
@@ -378,10 +405,13 @@ files:
378
405
  - lib/expressir/express/streaming_builder.rb
379
406
  - lib/expressir/express/transformer/remark_handling.rb
380
407
  - lib/expressir/liquid.rb
408
+ - lib/expressir/manifest.rb
381
409
  - lib/expressir/manifest/resolver.rb
382
410
  - lib/expressir/manifest/validator.rb
383
411
  - lib/expressir/model.rb
384
412
  - lib/expressir/model/cache.rb
413
+ - lib/expressir/model/concerns.rb
414
+ - lib/expressir/model/data_types.rb
385
415
  - lib/expressir/model/data_types/aggregate.rb
386
416
  - lib/expressir/model/data_types/array.rb
387
417
  - lib/expressir/model/data_types/bag.rb
@@ -399,6 +429,7 @@ files:
399
429
  - lib/expressir/model/data_types/select.rb
400
430
  - lib/expressir/model/data_types/set.rb
401
431
  - lib/expressir/model/data_types/string.rb
432
+ - lib/expressir/model/declarations.rb
402
433
  - lib/expressir/model/declarations/attribute.rb
403
434
  - lib/expressir/model/declarations/constant.rb
404
435
  - lib/expressir/model/declarations/derived_attribute.rb
@@ -422,6 +453,8 @@ files:
422
453
  - lib/expressir/model/declarations/variable.rb
423
454
  - lib/expressir/model/declarations/where_rule.rb
424
455
  - lib/expressir/model/dependency_resolver.rb
456
+ - lib/expressir/model/exp_file.rb
457
+ - lib/expressir/model/expressions.rb
425
458
  - lib/expressir/model/expressions/aggregate_initializer.rb
426
459
  - lib/expressir/model/expressions/aggregate_initializer_item.rb
427
460
  - lib/expressir/model/expressions/binary_expression.rb
@@ -431,16 +464,19 @@ files:
431
464
  - lib/expressir/model/expressions/query_expression.rb
432
465
  - lib/expressir/model/expressions/unary_expression.rb
433
466
  - lib/expressir/model/identifier.rb
467
+ - lib/expressir/model/indexes.rb
434
468
  - lib/expressir/model/indexes/entity_index.rb
435
469
  - lib/expressir/model/indexes/reference_index.rb
436
470
  - lib/expressir/model/indexes/type_index.rb
437
471
  - lib/expressir/model/interface_validator.rb
472
+ - lib/expressir/model/literals.rb
438
473
  - lib/expressir/model/literals/binary.rb
439
474
  - lib/expressir/model/literals/integer.rb
440
475
  - lib/expressir/model/literals/logical.rb
441
476
  - lib/expressir/model/literals/real.rb
442
477
  - lib/expressir/model/literals/string.rb
443
478
  - lib/expressir/model/model_element.rb
479
+ - lib/expressir/model/references.rb
444
480
  - lib/expressir/model/references/attribute_reference.rb
445
481
  - lib/expressir/model/references/group_reference.rb
446
482
  - lib/expressir/model/references/index_reference.rb
@@ -449,6 +485,7 @@ files:
449
485
  - lib/expressir/model/repository.rb
450
486
  - lib/expressir/model/repository_validator.rb
451
487
  - lib/expressir/model/search_engine.rb
488
+ - lib/expressir/model/statements.rb
452
489
  - lib/expressir/model/statements/alias.rb
453
490
  - lib/expressir/model/statements/assignment.rb
454
491
  - lib/expressir/model/statements/case.rb
@@ -461,13 +498,16 @@ files:
461
498
  - lib/expressir/model/statements/repeat.rb
462
499
  - lib/expressir/model/statements/return.rb
463
500
  - lib/expressir/model/statements/skip.rb
501
+ - lib/expressir/model/supertype_expressions.rb
464
502
  - lib/expressir/model/supertype_expressions/binary_supertype_expression.rb
465
503
  - lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb
504
+ - lib/expressir/package.rb
466
505
  - lib/expressir/package/builder.rb
467
506
  - lib/expressir/package/metadata.rb
468
507
  - lib/expressir/package/reader.rb
469
508
  - lib/expressir/schema_manifest.rb
470
509
  - lib/expressir/schema_manifest_entry.rb
510
+ - lib/expressir/transformer.rb
471
511
  - lib/expressir/version.rb
472
512
  homepage: https://github.com/lutaml/expressir
473
513
  licenses:
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Token builders - operator tokens that return nil.
4
- # These are used as separators in lists and don't produce model objects.
5
-
6
- # Operator tokens - return nil
7
- %i[op_comma op_colon op_decl op_delim op_leftparen op_rightparen
8
- op_leftbracket op_rightbracket op_left_curly_brace op_right_curly_brace
9
- op_period op_pipe op_double_backslash op_double_pipe op_double_asterisk
10
- op_asterisk op_slash op_plus op_minus op_less_equal op_greater_equal
11
- op_less_greater op_less_than op_greater_than op_equals
12
- op_colon_less_greater_colon op_colon_equals_colon
13
- op_query_begin op_query_end op_question_mark].each do |token|
14
- Builder.register(token) { |_d| nil }
15
- end