expressir 2.2.0 → 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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +254 -77
  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 +4 -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/base.rb +2 -9
  18. data/lib/expressir/commands/changes.rb +0 -2
  19. data/lib/expressir/commands/changes_import_eengine.rb +0 -3
  20. data/lib/expressir/commands/changes_validate.rb +0 -2
  21. data/lib/expressir/commands/format.rb +5 -3
  22. data/lib/expressir/commands/manifest.rb +0 -7
  23. data/lib/expressir/commands/package.rb +93 -101
  24. data/lib/expressir/commands/validate.rb +0 -2
  25. data/lib/expressir/commands/validate_ascii.rb +2 -4
  26. data/lib/expressir/commands/validate_load.rb +8 -5
  27. data/lib/expressir/commands.rb +20 -0
  28. data/lib/expressir/config.rb +0 -2
  29. data/lib/expressir/coverage.rb +11 -4
  30. data/lib/expressir/eengine/arm_compare_report.rb +1 -4
  31. data/lib/expressir/eengine/changes_section.rb +1 -3
  32. data/lib/expressir/eengine/compare_report.rb +1 -13
  33. data/lib/expressir/eengine/mim_compare_report.rb +1 -4
  34. data/lib/expressir/eengine/modified_object.rb +1 -2
  35. data/lib/expressir/eengine.rb +9 -0
  36. data/lib/expressir/errors.rb +113 -0
  37. data/lib/expressir/express/builder.rb +22 -7
  38. data/lib/expressir/express/builder_registry.rb +411 -0
  39. data/lib/expressir/express/builders/attribute_decl_builder.rb +0 -6
  40. data/lib/expressir/express/builders/built_in_builder.rb +1 -16
  41. data/lib/expressir/express/builders/constant_builder.rb +4 -19
  42. data/lib/expressir/express/builders/declaration_builder.rb +0 -4
  43. data/lib/expressir/express/builders/derive_clause_builder.rb +0 -2
  44. data/lib/expressir/express/builders/derived_attr_builder.rb +0 -2
  45. data/lib/expressir/express/builders/domain_rule_builder.rb +0 -2
  46. data/lib/expressir/express/builders/entity_decl_builder.rb +7 -13
  47. data/lib/expressir/express/builders/explicit_attr_builder.rb +5 -8
  48. data/lib/expressir/express/builders/expression_builder.rb +31 -67
  49. data/lib/expressir/express/builders/function_decl_builder.rb +20 -18
  50. data/lib/expressir/express/builders/interface_builder.rb +0 -20
  51. data/lib/expressir/express/builders/inverse_attr_builder.rb +0 -2
  52. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +0 -6
  53. data/lib/expressir/express/builders/inverse_clause_builder.rb +0 -2
  54. data/lib/expressir/express/builders/literal_builder.rb +1 -15
  55. data/lib/expressir/express/builders/procedure_decl_builder.rb +20 -19
  56. data/lib/expressir/express/builders/qualifier_builder.rb +0 -27
  57. data/lib/expressir/express/builders/reference_builder.rb +1 -10
  58. data/lib/expressir/express/builders/rule_decl_builder.rb +21 -19
  59. data/lib/expressir/express/builders/schema_body_decl_builder.rb +0 -4
  60. data/lib/expressir/express/builders/schema_decl_builder.rb +7 -13
  61. data/lib/expressir/express/builders/schema_version_builder.rb +0 -6
  62. data/lib/expressir/express/builders/simple_id_builder.rb +1 -10
  63. data/lib/expressir/express/builders/statement_builder.rb +4 -32
  64. data/lib/expressir/express/builders/subtype_constraint_builder.rb +6 -30
  65. data/lib/expressir/express/builders/syntax_builder.rb +60 -7
  66. data/lib/expressir/express/builders/type_builder.rb +3 -45
  67. data/lib/expressir/express/builders/type_decl_builder.rb +1 -7
  68. data/lib/expressir/express/builders/unique_clause_builder.rb +1 -3
  69. data/lib/expressir/express/builders/unique_rule_builder.rb +0 -2
  70. data/lib/expressir/express/builders/where_clause_builder.rb +1 -3
  71. data/lib/expressir/express/builders.rb +47 -35
  72. data/lib/expressir/express/error.rb +0 -3
  73. data/lib/expressir/express/formatter.rb +17 -19
  74. data/lib/expressir/express/formatters/data_types_formatter.rb +295 -293
  75. data/lib/expressir/express/formatters/declarations_formatter.rb +617 -615
  76. data/lib/expressir/express/formatters/expressions_formatter.rb +146 -144
  77. data/lib/expressir/express/formatters/literals_formatter.rb +35 -33
  78. data/lib/expressir/express/formatters/references_formatter.rb +34 -32
  79. data/lib/expressir/express/formatters/remark_formatter.rb +176 -209
  80. data/lib/expressir/express/formatters/remark_item_formatter.rb +18 -16
  81. data/lib/expressir/express/formatters/statements_formatter.rb +190 -188
  82. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +41 -39
  83. data/lib/expressir/express/formatters.rb +22 -0
  84. data/lib/expressir/express/parser.rb +40 -41
  85. data/lib/expressir/express/pretty_formatter.rb +68 -47
  86. data/lib/expressir/express/remark_attacher.rb +210 -147
  87. data/lib/expressir/express/streaming_builder.rb +0 -3
  88. data/lib/expressir/express/transformer/remark_handling.rb +1 -2
  89. data/lib/expressir/express.rb +29 -0
  90. data/lib/expressir/manifest/resolver.rb +0 -3
  91. data/lib/expressir/manifest/validator.rb +0 -3
  92. data/lib/expressir/manifest.rb +6 -0
  93. data/lib/expressir/model/cache.rb +1 -1
  94. data/lib/expressir/model/concerns.rb +19 -0
  95. data/lib/expressir/model/data_types/aggregate.rb +1 -1
  96. data/lib/expressir/model/data_types/array.rb +1 -1
  97. data/lib/expressir/model/data_types/bag.rb +1 -1
  98. data/lib/expressir/model/data_types/binary.rb +1 -1
  99. data/lib/expressir/model/data_types/boolean.rb +1 -1
  100. data/lib/expressir/model/data_types/enumeration.rb +1 -1
  101. data/lib/expressir/model/data_types/enumeration_item.rb +1 -1
  102. data/lib/expressir/model/data_types/generic.rb +1 -1
  103. data/lib/expressir/model/data_types/generic_entity.rb +1 -1
  104. data/lib/expressir/model/data_types/integer.rb +1 -1
  105. data/lib/expressir/model/data_types/list.rb +1 -1
  106. data/lib/expressir/model/data_types/logical.rb +1 -1
  107. data/lib/expressir/model/data_types/number.rb +1 -1
  108. data/lib/expressir/model/data_types/real.rb +1 -1
  109. data/lib/expressir/model/data_types/select.rb +1 -1
  110. data/lib/expressir/model/data_types/set.rb +1 -1
  111. data/lib/expressir/model/data_types/string.rb +1 -1
  112. data/lib/expressir/model/data_types.rb +25 -0
  113. data/lib/expressir/model/declarations/attribute.rb +1 -1
  114. data/lib/expressir/model/declarations/constant.rb +1 -1
  115. data/lib/expressir/model/declarations/derived_attribute.rb +1 -1
  116. data/lib/expressir/model/declarations/entity.rb +4 -1
  117. data/lib/expressir/model/declarations/function.rb +3 -1
  118. data/lib/expressir/model/declarations/informal_proposition_rule.rb +2 -1
  119. data/lib/expressir/model/declarations/interface.rb +1 -1
  120. data/lib/expressir/model/declarations/interface_item.rb +1 -1
  121. data/lib/expressir/model/declarations/interfaced_item.rb +1 -1
  122. data/lib/expressir/model/declarations/inverse_attribute.rb +1 -1
  123. data/lib/expressir/model/declarations/parameter.rb +1 -1
  124. data/lib/expressir/model/declarations/procedure.rb +3 -1
  125. data/lib/expressir/model/declarations/remark_item.rb +1 -1
  126. data/lib/expressir/model/declarations/rule.rb +4 -1
  127. data/lib/expressir/model/declarations/schema.rb +2 -1
  128. data/lib/expressir/model/declarations/schema_version.rb +1 -1
  129. data/lib/expressir/model/declarations/schema_version_item.rb +1 -1
  130. data/lib/expressir/model/declarations/subtype_constraint.rb +1 -1
  131. data/lib/expressir/model/declarations/type.rb +4 -1
  132. data/lib/expressir/model/declarations/unique_rule.rb +1 -1
  133. data/lib/expressir/model/declarations/variable.rb +1 -1
  134. data/lib/expressir/model/declarations/where_rule.rb +1 -1
  135. data/lib/expressir/model/declarations.rb +31 -0
  136. data/lib/expressir/model/dependency_resolver.rb +0 -2
  137. data/lib/expressir/model/exp_file.rb +38 -0
  138. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  139. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +1 -1
  140. data/lib/expressir/model/expressions/binary_expression.rb +1 -1
  141. data/lib/expressir/model/expressions/entity_constructor.rb +1 -1
  142. data/lib/expressir/model/expressions/function_call.rb +1 -1
  143. data/lib/expressir/model/expressions/interval.rb +1 -1
  144. data/lib/expressir/model/expressions/query_expression.rb +1 -1
  145. data/lib/expressir/model/expressions/unary_expression.rb +1 -1
  146. data/lib/expressir/model/expressions.rb +18 -0
  147. data/lib/expressir/model/identifier.rb +5 -1
  148. data/lib/expressir/model/indexes.rb +11 -0
  149. data/lib/expressir/model/literals/binary.rb +1 -1
  150. data/lib/expressir/model/literals/integer.rb +1 -1
  151. data/lib/expressir/model/literals/logical.rb +1 -1
  152. data/lib/expressir/model/literals/real.rb +1 -1
  153. data/lib/expressir/model/literals/string.rb +1 -1
  154. data/lib/expressir/model/literals.rb +13 -0
  155. data/lib/expressir/model/model_element.rb +7 -15
  156. data/lib/expressir/model/references/attribute_reference.rb +1 -1
  157. data/lib/expressir/model/references/group_reference.rb +1 -1
  158. data/lib/expressir/model/references/index_reference.rb +1 -1
  159. data/lib/expressir/model/references/simple_reference.rb +1 -1
  160. data/lib/expressir/model/references.rb +12 -0
  161. data/lib/expressir/model/remark_info.rb +1 -7
  162. data/lib/expressir/model/repository.rb +72 -36
  163. data/lib/expressir/model/repository_validator.rb +0 -2
  164. data/lib/expressir/model/search_engine.rb +6 -30
  165. data/lib/expressir/model/statements/alias.rb +1 -1
  166. data/lib/expressir/model/statements/assignment.rb +1 -1
  167. data/lib/expressir/model/statements/case.rb +1 -1
  168. data/lib/expressir/model/statements/case_action.rb +1 -1
  169. data/lib/expressir/model/statements/compound.rb +1 -1
  170. data/lib/expressir/model/statements/escape.rb +1 -1
  171. data/lib/expressir/model/statements/if.rb +1 -1
  172. data/lib/expressir/model/statements/null.rb +1 -1
  173. data/lib/expressir/model/statements/procedure_call.rb +1 -1
  174. data/lib/expressir/model/statements/repeat.rb +1 -1
  175. data/lib/expressir/model/statements/return.rb +1 -1
  176. data/lib/expressir/model/statements/skip.rb +1 -1
  177. data/lib/expressir/model/statements.rb +20 -0
  178. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +1 -1
  179. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +1 -1
  180. data/lib/expressir/model/supertype_expressions.rb +12 -0
  181. data/lib/expressir/model.rb +28 -4
  182. data/lib/expressir/package/builder.rb +33 -4
  183. data/lib/expressir/package/metadata.rb +0 -1
  184. data/lib/expressir/package/reader.rb +0 -1
  185. data/lib/expressir/package.rb +8 -0
  186. data/lib/expressir/schema_manifest.rb +5 -6
  187. data/lib/expressir/schema_manifest_entry.rb +3 -4
  188. data/lib/expressir/transformer.rb +7 -0
  189. data/lib/expressir/version.rb +1 -1
  190. data/lib/expressir.rb +23 -173
  191. metadata +64 -9
  192. data/lib/expressir/express/builders/token_builder.rb +0 -15
@@ -7,7 +7,7 @@ module Expressir
7
7
  attribute :expression, ModelElement
8
8
  attribute :statements, ModelElement, collection: true
9
9
  attribute :else_statements, ModelElement, collection: true
10
- attribute :_class, :string, default: -> { send(:name) }
10
+ attribute :_class, :string, default: -> { self.class.name }
11
11
 
12
12
  key_value do
13
13
  map "_class", to: :_class, render_default: true
@@ -4,7 +4,7 @@ module Expressir
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.1 Null (statement)
6
6
  class Null < ModelElement
7
- attribute :_class, :string, default: -> { send(:name) }
7
+ attribute :_class, :string, default: -> { self.class.name }
8
8
 
9
9
  key_value do
10
10
  map "_class", to: :_class, render_default: true
@@ -6,7 +6,7 @@ module Expressir
6
6
  class ProcedureCall < ModelElement
7
7
  attribute :procedure, ModelElement
8
8
  attribute :parameters, ModelElement, collection: true
9
- attribute :_class, :string, default: -> { send(:name) }
9
+ attribute :_class, :string, default: -> { self.class.name }
10
10
 
11
11
  key_value do
12
12
  map "_class", to: :_class, render_default: true
@@ -12,7 +12,7 @@ module Expressir
12
12
  attribute :while_expression, ModelElement
13
13
  attribute :until_expression, ModelElement
14
14
  attribute :statements, ModelElement, collection: true
15
- attribute :_class, :string, default: -> { send(:name) }
15
+ attribute :_class, :string, default: -> { self.class.name }
16
16
 
17
17
  key_value do
18
18
  map "_class", to: :_class, render_default: true
@@ -5,7 +5,7 @@ module Expressir
5
5
  # - section 13.10 Return statement
6
6
  class Return < ModelElement
7
7
  attribute :expression, ModelElement
8
- attribute :_class, :string, default: -> { send(:name) }
8
+ attribute :_class, :string, default: -> { self.class.name }
9
9
 
10
10
  key_value do
11
11
  map "_class", to: :_class, render_default: true
@@ -4,7 +4,7 @@ module Expressir
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.11 Skip statement
6
6
  class Skip < ModelElement
7
- attribute :_class, :string, default: -> { send(:name) }
7
+ attribute :_class, :string, default: -> { self.class.name }
8
8
 
9
9
  key_value do
10
10
  map "_class", to: :_class, render_default: true
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ module Model
5
+ module Statements
6
+ autoload :Alias, "#{__dir__}/statements/alias"
7
+ autoload :Assignment, "#{__dir__}/statements/assignment"
8
+ autoload :Case, "#{__dir__}/statements/case"
9
+ autoload :CaseAction, "#{__dir__}/statements/case_action"
10
+ autoload :Compound, "#{__dir__}/statements/compound"
11
+ autoload :Escape, "#{__dir__}/statements/escape"
12
+ autoload :If, "#{__dir__}/statements/if"
13
+ autoload :Null, "#{__dir__}/statements/null"
14
+ autoload :ProcedureCall, "#{__dir__}/statements/procedure_call"
15
+ autoload :Repeat, "#{__dir__}/statements/repeat"
16
+ autoload :Return, "#{__dir__}/statements/return"
17
+ autoload :Skip, "#{__dir__}/statements/skip"
18
+ end
19
+ end
20
+ end
@@ -11,7 +11,7 @@ module Expressir
11
11
  attribute :operator, :string, values: %w[AND ANDOR]
12
12
  attribute :operand1, ModelElement
13
13
  attribute :operand2, ModelElement
14
- attribute :_class, :string, default: -> { send(:name) }
14
+ attribute :_class, :string, default: -> { self.class.name }
15
15
 
16
16
  key_value do
17
17
  map "_class", to: :_class, render_default: true
@@ -5,7 +5,7 @@ module Expressir
5
5
  # - section 9.2.5.2 ONEOF
6
6
  class OneofSupertypeExpression < ModelElement
7
7
  attribute :operands, ModelElement, collection: true
8
- attribute :_class, :string, default: -> { send(:name) }
8
+ attribute :_class, :string, default: -> { self.class.name }
9
9
 
10
10
  key_value do
11
11
  map "_class", to: :_class, render_default: true
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ module Model
5
+ module SupertypeExpressions
6
+ autoload :BinarySupertypeExpression,
7
+ "#{__dir__}/supertype_expressions/binary_supertype_expression"
8
+ autoload :OneofSupertypeExpression,
9
+ "#{__dir__}/supertype_expressions/oneof_supertype_expression"
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,29 @@
1
- # frozen_string_literal: true
1
+ # lib/expressir/model.rb
2
2
 
3
- # This file is kept for backward compatibility when explicitly requiring 'expressir/model'
4
- # The actual autoload definitions are in lib/expressir.rb
5
- # This file does nothing - autoload handles everything automatically
3
+ # Load marker modules for type checking
4
+ require_relative "model/concerns"
5
+
6
+ module Expressir
7
+ module Model
8
+ autoload :ModelElement, "#{__dir__}/model/model_element"
9
+ autoload :Cache, "#{__dir__}/model/cache"
10
+ autoload :ExpFile, "#{__dir__}/model/exp_file"
11
+ autoload :Identifier, "#{__dir__}/model/identifier"
12
+ autoload :Repository, "#{__dir__}/model/repository"
13
+ autoload :RepositoryValidator, "#{__dir__}/model/repository_validator"
14
+ autoload :DependencyResolver, "#{__dir__}/model/dependency_resolver"
15
+ autoload :RemarkInfo, "#{__dir__}/model/remark_info"
16
+ autoload :InterfaceValidator, "#{__dir__}/model/interface_validator"
17
+ autoload :SearchEngine, "#{__dir__}/model/search_engine"
18
+
19
+ # Submodules - autoload their namespace files
20
+ autoload :Indexes, "#{__dir__}/model/indexes"
21
+ autoload :DataTypes, "#{__dir__}/model/data_types"
22
+ autoload :Declarations, "#{__dir__}/model/declarations"
23
+ autoload :Expressions, "#{__dir__}/model/expressions"
24
+ autoload :Literals, "#{__dir__}/model/literals"
25
+ autoload :References, "#{__dir__}/model/references"
26
+ autoload :Statements, "#{__dir__}/model/statements"
27
+ autoload :SupertypeExpressions, "#{__dir__}/model/supertype_expressions"
28
+ end
29
+ end
@@ -2,7 +2,6 @@
2
2
 
3
3
  require "zip"
4
4
  require "time"
5
- require_relative "metadata"
6
5
 
7
6
  module Expressir
8
7
  module Package
@@ -119,22 +118,52 @@ module Expressir
119
118
  # @param format [String] Serialization format
120
119
  # @return [void]
121
120
  def add_serialized_repository(zip, repository, format)
121
+ # Normalize repository - ensure all schemas are in files for serialization
122
+ normalized_repo = normalize_repository(repository)
123
+
122
124
  case format
123
125
  when "marshal"
124
126
  zip.get_output_stream("repository.marshal") do |stream|
125
- stream.write(Marshal.dump(repository))
127
+ stream.write(Marshal.dump(normalized_repo))
126
128
  end
127
129
  when "json"
128
130
  zip.get_output_stream("repository.json") do |stream|
129
- stream.write(repository.to_json)
131
+ stream.write(normalized_repo.to_json)
130
132
  end
131
133
  when "yaml"
132
134
  zip.get_output_stream("repository.yaml") do |stream|
133
- stream.write(repository.to_yaml)
135
+ stream.write(normalized_repo.to_yaml)
134
136
  end
135
137
  end
136
138
  end
137
139
 
140
+ # Normalize repository for serialization
141
+ # Ensures all schemas are in files (not in @_schemas)
142
+ # @param repository [Model::Repository] Repository to normalize
143
+ # @return [Model::Repository] Normalized repository
144
+ def normalize_repository(repository)
145
+ # Create a new repository with proper file structure
146
+ normalized = Model::Repository.new(base_dir: repository.base_dir)
147
+
148
+ # Copy existing files
149
+ repository.files&.each do |file|
150
+ normalized.files << file
151
+ end
152
+
153
+ # Get schemas that are not already in files
154
+ file_schema_ids = normalized.files.flat_map(&:schemas).compact.map(&:id)
155
+ direct_schemas = repository.schemas.reject { |s| file_schema_ids.include?(s.id) }
156
+
157
+ # Create an ExpFile for direct schemas
158
+ if direct_schemas.any?
159
+ exp_file = Model::ExpFile.new(path: "direct_schemas.exp")
160
+ exp_file.schemas = direct_schemas
161
+ normalized.files << exp_file
162
+ end
163
+
164
+ normalized
165
+ end
166
+
138
167
  # Add EXPRESS files to package
139
168
  # @param zip [Zip::File] ZIP archive
140
169
  # @param repository [Model::Repository] Repository instance
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "lutaml/model"
4
3
 
5
4
  module Expressir
6
5
  module Package
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "zip"
4
- require_relative "metadata"
5
4
 
6
5
  module Expressir
7
6
  module Package
@@ -0,0 +1,8 @@
1
+ # lib/expressir/package.rb
2
+ module Expressir
3
+ module Package
4
+ autoload :Metadata, "#{__dir__}/package/metadata"
5
+ autoload :Builder, "#{__dir__}/package/builder"
6
+ autoload :Reader, "#{__dir__}/package/reader"
7
+ end
8
+ end
@@ -1,13 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "lutaml/model"
4
- require_relative "schema_manifest_entry"
5
3
 
6
4
  module Expressir
7
5
  class SchemaManifest < Lutaml::Model::Serializable
8
- attribute :schemas, SchemaManifestEntry, collection: true,
9
- initialize_empty: true
10
- attribute :path, Lutaml::Model::Type::String
6
+ attribute :schemas, "Expressir::SchemaManifestEntry",
7
+ collection: true,
8
+ initialize_empty: true
9
+ attribute :path, :string
11
10
  attr_accessor :output_path
12
11
 
13
12
  def initialize(**args)
@@ -28,7 +27,7 @@ module Expressir
28
27
  x.set_initial_path(path)
29
28
  end
30
29
  rescue StandardError => e
31
- raise InvalidSchemaManifestError,
30
+ raise ManifestValidationError,
32
31
  "Invalid schema manifest format: #{e.message}"
33
32
  end
34
33
 
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "lutaml/model"
4
3
 
5
4
  module Expressir
6
5
  class SchemaManifestEntry < Lutaml::Model::Serializable
7
- attribute :id, Lutaml::Model::Type::String
8
- attribute :path, Lutaml::Model::Type::String
9
- # attribute :schemas_only, Lutaml::Model::Type::Boolean
6
+ attribute :id, :string
7
+ attribute :path, :string
8
+ # attribute :schemas_only, :boolean
10
9
 
11
10
  # container_path is a copy of Expressir::SchemaManifest.path,
12
11
  # used to resolve the path of each schema within
@@ -0,0 +1,7 @@
1
+ module Expressir
2
+ module Express
3
+ module Transformer
4
+ autoload :RemarkHandling, "#{__dir__}/express/transformer/remark_handling"
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Expressir
2
- VERSION = "2.2.0".freeze
2
+ VERSION = "2.3.0".freeze
3
3
  end
data/lib/expressir.rb CHANGED
@@ -1,10 +1,6 @@
1
1
  require_relative "expressir/version"
2
- require_relative "expressir/cli"
3
- require_relative "expressir/config"
4
- require_relative "expressir/benchmark"
5
- require_relative "expressir/coverage"
6
- require_relative "expressir/schema_manifest"
7
- require_relative "expressir/schema_manifest_entry"
2
+ require_relative "expressir/errors"
3
+
8
4
  require "lutaml/model"
9
5
  require "liquid" # To enable Lutaml::Model::Liquefiable
10
6
 
@@ -28,8 +24,27 @@ else
28
24
  end
29
25
 
30
26
  module Expressir
31
- class Error < StandardError; end
32
- class InvalidSchemaManifestError < Error; end
27
+ # Namespace modules - autoload loads the namespace file which contains
28
+ # autoload definitions for classes within that namespace
29
+ autoload :Config, "#{__dir__}/expressir/config"
30
+ extend Config
31
+
32
+ autoload :Benchmark, "#{__dir__}/expressir/benchmark"
33
+ autoload :Coverage, "#{__dir__}/expressir/coverage"
34
+
35
+ autoload :Express, "#{__dir__}/expressir/express"
36
+ autoload :Model, "#{__dir__}/expressir/model"
37
+ autoload :Commands, "#{__dir__}/expressir/commands"
38
+ autoload :Changes, "#{__dir__}/expressir/changes"
39
+ autoload :Package, "#{__dir__}/expressir/package"
40
+ autoload :Manifest, "#{__dir__}/expressir/manifest"
41
+ autoload :Eengine, "#{__dir__}/expressir/eengine"
42
+ autoload :SchemaManifest, "#{__dir__}/expressir/schema_manifest"
43
+ autoload :SchemaManifestEntry, "#{__dir__}/expressir/schema_manifest_entry"
44
+
45
+ # CLI is loaded last so that namespace autoloads are defined first
46
+ # CLI uses Expressir::Commands::* which triggers autoload
47
+ autoload :Cli, "#{__dir__}/expressir/cli"
33
48
 
34
49
  def self.root
35
50
  File.dirname(__dir__)
@@ -38,169 +53,4 @@ module Expressir
38
53
  def self.root_path
39
54
  @root_path ||= Pathname.new(Expressir.root)
40
55
  end
41
-
42
- # Autoload for Express module classes
43
- module Express
44
- autoload :Builder, "expressir/express/builder"
45
- autoload :Cache, "expressir/express/cache"
46
- autoload :Error, "expressir/express/error"
47
- autoload :Formatter, "expressir/express/formatter"
48
- autoload :HyperlinkFormatter, "expressir/express/hyperlink_formatter"
49
- autoload :ModelVisitor, "expressir/express/model_visitor"
50
- autoload :Parser, "expressir/express/parser"
51
- autoload :PrettyFormatter, "expressir/express/pretty_formatter"
52
- autoload :RemarkAttacher, "expressir/express/remark_attacher"
53
- autoload :ResolveReferencesModelVisitor,
54
- "expressir/express/resolve_references_model_visitor"
55
- autoload :SchemaHeadFormatter, "expressir/express/schema_head_formatter"
56
- autoload :StreamingBuilder, "expressir/express/streaming_builder"
57
- end
58
-
59
- # Autoload for Model module classes
60
- module Model
61
- autoload :ModelElement, "expressir/model/model_element"
62
- autoload :Cache, "expressir/model/cache"
63
- autoload :Identifier, "expressir/model/identifier"
64
- autoload :Repository, "expressir/model/repository"
65
- autoload :RepositoryValidator, "expressir/model/repository_validator"
66
- autoload :DependencyResolver, "expressir/model/dependency_resolver"
67
- autoload :RemarkInfo, "expressir/model/remark_info"
68
-
69
- module Indexes
70
- autoload :EntityIndex, "expressir/model/indexes/entity_index"
71
- autoload :TypeIndex, "expressir/model/indexes/type_index"
72
- autoload :ReferenceIndex, "expressir/model/indexes/reference_index"
73
- end
74
-
75
- module DataTypes
76
- autoload :Aggregate, "expressir/model/data_types/aggregate"
77
- autoload :Array, "expressir/model/data_types/array"
78
- autoload :Bag, "expressir/model/data_types/bag"
79
- autoload :Binary, "expressir/model/data_types/binary"
80
- autoload :Boolean, "expressir/model/data_types/boolean"
81
- autoload :Enumeration, "expressir/model/data_types/enumeration"
82
- autoload :EnumerationItem, "expressir/model/data_types/enumeration_item"
83
- autoload :GenericEntity, "expressir/model/data_types/generic_entity"
84
- autoload :Generic, "expressir/model/data_types/generic"
85
- autoload :Integer, "expressir/model/data_types/integer"
86
- autoload :List, "expressir/model/data_types/list"
87
- autoload :Logical, "expressir/model/data_types/logical"
88
- autoload :Number, "expressir/model/data_types/number"
89
- autoload :Real, "expressir/model/data_types/real"
90
- autoload :Select, "expressir/model/data_types/select"
91
- autoload :Set, "expressir/model/data_types/set"
92
- autoload :String, "expressir/model/data_types/string"
93
- end
94
-
95
- module Declarations
96
- autoload :Attribute, "expressir/model/declarations/attribute"
97
- autoload :Constant, "expressir/model/declarations/constant"
98
- autoload :DerivedAttribute,
99
- "expressir/model/declarations/derived_attribute"
100
- autoload :Entity, "expressir/model/declarations/entity"
101
- autoload :Function, "expressir/model/declarations/function"
102
- autoload :Interface, "expressir/model/declarations/interface"
103
- autoload :InterfaceItem, "expressir/model/declarations/interface_item"
104
- autoload :InterfacedItem, "expressir/model/declarations/interfaced_item"
105
- autoload :InverseAttribute,
106
- "expressir/model/declarations/inverse_attribute"
107
- autoload :Parameter, "expressir/model/declarations/parameter"
108
- autoload :Procedure, "expressir/model/declarations/procedure"
109
- autoload :RemarkItem, "expressir/model/declarations/remark_item"
110
- autoload :Rule, "expressir/model/declarations/rule"
111
- autoload :Schema, "expressir/model/declarations/schema"
112
- autoload :SchemaVersion, "expressir/model/declarations/schema_version"
113
- autoload :SchemaVersionItem,
114
- "expressir/model/declarations/schema_version_item"
115
- autoload :SubtypeConstraint,
116
- "expressir/model/declarations/subtype_constraint"
117
- autoload :Type, "expressir/model/declarations/type"
118
- autoload :UniqueRule, "expressir/model/declarations/unique_rule"
119
- autoload :Variable, "expressir/model/declarations/variable"
120
- autoload :WhereRule, "expressir/model/declarations/where_rule"
121
- autoload :InformalPropositionRule,
122
- "expressir/model/declarations/informal_proposition_rule"
123
- end
124
-
125
- module Expressions
126
- autoload :AggregateInitializer,
127
- "expressir/model/expressions/aggregate_initializer"
128
- autoload :AggregateInitializerItem,
129
- "expressir/model/expressions/aggregate_initializer_item"
130
- autoload :BinaryExpression,
131
- "expressir/model/expressions/binary_expression"
132
- autoload :EntityConstructor,
133
- "expressir/model/expressions/entity_constructor"
134
- autoload :FunctionCall, "expressir/model/expressions/function_call"
135
- autoload :Interval, "expressir/model/expressions/interval"
136
- autoload :QueryExpression, "expressir/model/expressions/query_expression"
137
- autoload :UnaryExpression, "expressir/model/expressions/unary_expression"
138
- end
139
-
140
- module Literals
141
- autoload :Binary, "expressir/model/literals/binary"
142
- autoload :Integer, "expressir/model/literals/integer"
143
- autoload :Logical, "expressir/model/literals/logical"
144
- autoload :Real, "expressir/model/literals/real"
145
- autoload :String, "expressir/model/literals/string"
146
- end
147
-
148
- module References
149
- autoload :AttributeReference,
150
- "expressir/model/references/attribute_reference"
151
- autoload :GroupReference, "expressir/model/references/group_reference"
152
- autoload :IndexReference, "expressir/model/references/index_reference"
153
- autoload :SimpleReference, "expressir/model/references/simple_reference"
154
- end
155
-
156
- module Statements
157
- autoload :Alias, "expressir/model/statements/alias"
158
- autoload :Assignment, "expressir/model/statements/assignment"
159
- autoload :Case, "expressir/model/statements/case"
160
- autoload :CaseAction, "expressir/model/statements/case_action"
161
- autoload :Compound, "expressir/model/statements/compound"
162
- autoload :Escape, "expressir/model/statements/escape"
163
- autoload :If, "expressir/model/statements/if"
164
- autoload :Null, "expressir/model/statements/null"
165
- autoload :ProcedureCall, "expressir/model/statements/procedure_call"
166
- autoload :Repeat, "expressir/model/statements/repeat"
167
- autoload :Return, "expressir/model/statements/return"
168
- autoload :Skip, "expressir/model/statements/skip"
169
- end
170
-
171
- module SupertypeExpressions
172
- autoload :BinarySupertypeExpression,
173
- "expressir/model/supertype_expressions/binary_supertype_expression"
174
- autoload :OneofSupertypeExpression,
175
- "expressir/model/supertype_expressions/oneof_supertype_expression"
176
- end
177
- end
178
-
179
- # Autoload for Package module classes
180
- module Package
181
- autoload :Metadata, "expressir/package/metadata"
182
- autoload :Builder, "expressir/package/builder"
183
- autoload :Reader, "expressir/package/reader"
184
- end
185
-
186
- # Autoload for Commands module classes
187
- module Commands
188
- autoload :Base, "expressir/commands/base"
189
- autoload :Benchmark, "expressir/commands/benchmark"
190
- autoload :BenchmarkCache, "expressir/commands/benchmark_cache"
191
- autoload :Clean, "expressir/commands/clean"
192
- autoload :ImportComparison, "expressir/commands/import_comparison"
193
- autoload :Coverage, "expressir/commands/coverage"
194
- autoload :Format, "expressir/commands/format"
195
- autoload :Validate, "expressir/commands/validate"
196
- autoload :Version, "expressir/commands/version"
197
- end
198
-
199
- # Autoload for Changes module classes
200
- module Changes
201
- autoload :SchemaChange, "expressir/changes/schema_change"
202
- autoload :VersionChange, "expressir/changes/version_change"
203
- autoload :ItemChange, "expressir/changes/item_change"
204
- autoload :MappingChange, "expressir/changes/mapping_change"
205
- end
206
56
  end