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
@@ -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.1".freeze
2
+ VERSION = "2.3.0".freeze
3
3
  end
data/lib/expressir.rb CHANGED
@@ -1,11 +1,6 @@
1
1
  require_relative "expressir/version"
2
2
  require_relative "expressir/errors"
3
- require_relative "expressir/cli"
4
- require_relative "expressir/config"
5
- require_relative "expressir/benchmark"
6
- require_relative "expressir/coverage"
7
- require_relative "expressir/schema_manifest"
8
- require_relative "expressir/schema_manifest_entry"
3
+
9
4
  require "lutaml/model"
10
5
  require "liquid" # To enable Lutaml::Model::Liquefiable
11
6
 
@@ -29,6 +24,28 @@ else
29
24
  end
30
25
 
31
26
  module Expressir
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"
48
+
32
49
  def self.root
33
50
  File.dirname(__dir__)
34
51
  end
@@ -36,169 +53,4 @@ module Expressir
36
53
  def self.root_path
37
54
  @root_path ||= Pathname.new(Expressir.root)
38
55
  end
39
-
40
- # Autoload for Express module classes
41
- module Express
42
- autoload :Builder, "expressir/express/builder"
43
- autoload :Cache, "expressir/express/cache"
44
- autoload :Error, "expressir/express/error"
45
- autoload :Formatter, "expressir/express/formatter"
46
- autoload :HyperlinkFormatter, "expressir/express/hyperlink_formatter"
47
- autoload :ModelVisitor, "expressir/express/model_visitor"
48
- autoload :Parser, "expressir/express/parser"
49
- autoload :PrettyFormatter, "expressir/express/pretty_formatter"
50
- autoload :RemarkAttacher, "expressir/express/remark_attacher"
51
- autoload :ResolveReferencesModelVisitor,
52
- "expressir/express/resolve_references_model_visitor"
53
- autoload :SchemaHeadFormatter, "expressir/express/schema_head_formatter"
54
- autoload :StreamingBuilder, "expressir/express/streaming_builder"
55
- end
56
-
57
- # Autoload for Model module classes
58
- module Model
59
- autoload :ModelElement, "expressir/model/model_element"
60
- autoload :Cache, "expressir/model/cache"
61
- autoload :Identifier, "expressir/model/identifier"
62
- autoload :Repository, "expressir/model/repository"
63
- autoload :RepositoryValidator, "expressir/model/repository_validator"
64
- autoload :DependencyResolver, "expressir/model/dependency_resolver"
65
- autoload :RemarkInfo, "expressir/model/remark_info"
66
-
67
- module Indexes
68
- autoload :EntityIndex, "expressir/model/indexes/entity_index"
69
- autoload :TypeIndex, "expressir/model/indexes/type_index"
70
- autoload :ReferenceIndex, "expressir/model/indexes/reference_index"
71
- end
72
-
73
- module DataTypes
74
- autoload :Aggregate, "expressir/model/data_types/aggregate"
75
- autoload :Array, "expressir/model/data_types/array"
76
- autoload :Bag, "expressir/model/data_types/bag"
77
- autoload :Binary, "expressir/model/data_types/binary"
78
- autoload :Boolean, "expressir/model/data_types/boolean"
79
- autoload :Enumeration, "expressir/model/data_types/enumeration"
80
- autoload :EnumerationItem, "expressir/model/data_types/enumeration_item"
81
- autoload :GenericEntity, "expressir/model/data_types/generic_entity"
82
- autoload :Generic, "expressir/model/data_types/generic"
83
- autoload :Integer, "expressir/model/data_types/integer"
84
- autoload :List, "expressir/model/data_types/list"
85
- autoload :Logical, "expressir/model/data_types/logical"
86
- autoload :Number, "expressir/model/data_types/number"
87
- autoload :Real, "expressir/model/data_types/real"
88
- autoload :Select, "expressir/model/data_types/select"
89
- autoload :Set, "expressir/model/data_types/set"
90
- autoload :String, "expressir/model/data_types/string"
91
- end
92
-
93
- module Declarations
94
- autoload :Attribute, "expressir/model/declarations/attribute"
95
- autoload :Constant, "expressir/model/declarations/constant"
96
- autoload :DerivedAttribute,
97
- "expressir/model/declarations/derived_attribute"
98
- autoload :Entity, "expressir/model/declarations/entity"
99
- autoload :Function, "expressir/model/declarations/function"
100
- autoload :Interface, "expressir/model/declarations/interface"
101
- autoload :InterfaceItem, "expressir/model/declarations/interface_item"
102
- autoload :InterfacedItem, "expressir/model/declarations/interfaced_item"
103
- autoload :InverseAttribute,
104
- "expressir/model/declarations/inverse_attribute"
105
- autoload :Parameter, "expressir/model/declarations/parameter"
106
- autoload :Procedure, "expressir/model/declarations/procedure"
107
- autoload :RemarkItem, "expressir/model/declarations/remark_item"
108
- autoload :Rule, "expressir/model/declarations/rule"
109
- autoload :Schema, "expressir/model/declarations/schema"
110
- autoload :SchemaVersion, "expressir/model/declarations/schema_version"
111
- autoload :SchemaVersionItem,
112
- "expressir/model/declarations/schema_version_item"
113
- autoload :SubtypeConstraint,
114
- "expressir/model/declarations/subtype_constraint"
115
- autoload :Type, "expressir/model/declarations/type"
116
- autoload :UniqueRule, "expressir/model/declarations/unique_rule"
117
- autoload :Variable, "expressir/model/declarations/variable"
118
- autoload :WhereRule, "expressir/model/declarations/where_rule"
119
- autoload :InformalPropositionRule,
120
- "expressir/model/declarations/informal_proposition_rule"
121
- end
122
-
123
- module Expressions
124
- autoload :AggregateInitializer,
125
- "expressir/model/expressions/aggregate_initializer"
126
- autoload :AggregateInitializerItem,
127
- "expressir/model/expressions/aggregate_initializer_item"
128
- autoload :BinaryExpression,
129
- "expressir/model/expressions/binary_expression"
130
- autoload :EntityConstructor,
131
- "expressir/model/expressions/entity_constructor"
132
- autoload :FunctionCall, "expressir/model/expressions/function_call"
133
- autoload :Interval, "expressir/model/expressions/interval"
134
- autoload :QueryExpression, "expressir/model/expressions/query_expression"
135
- autoload :UnaryExpression, "expressir/model/expressions/unary_expression"
136
- end
137
-
138
- module Literals
139
- autoload :Binary, "expressir/model/literals/binary"
140
- autoload :Integer, "expressir/model/literals/integer"
141
- autoload :Logical, "expressir/model/literals/logical"
142
- autoload :Real, "expressir/model/literals/real"
143
- autoload :String, "expressir/model/literals/string"
144
- end
145
-
146
- module References
147
- autoload :AttributeReference,
148
- "expressir/model/references/attribute_reference"
149
- autoload :GroupReference, "expressir/model/references/group_reference"
150
- autoload :IndexReference, "expressir/model/references/index_reference"
151
- autoload :SimpleReference, "expressir/model/references/simple_reference"
152
- end
153
-
154
- module Statements
155
- autoload :Alias, "expressir/model/statements/alias"
156
- autoload :Assignment, "expressir/model/statements/assignment"
157
- autoload :Case, "expressir/model/statements/case"
158
- autoload :CaseAction, "expressir/model/statements/case_action"
159
- autoload :Compound, "expressir/model/statements/compound"
160
- autoload :Escape, "expressir/model/statements/escape"
161
- autoload :If, "expressir/model/statements/if"
162
- autoload :Null, "expressir/model/statements/null"
163
- autoload :ProcedureCall, "expressir/model/statements/procedure_call"
164
- autoload :Repeat, "expressir/model/statements/repeat"
165
- autoload :Return, "expressir/model/statements/return"
166
- autoload :Skip, "expressir/model/statements/skip"
167
- end
168
-
169
- module SupertypeExpressions
170
- autoload :BinarySupertypeExpression,
171
- "expressir/model/supertype_expressions/binary_supertype_expression"
172
- autoload :OneofSupertypeExpression,
173
- "expressir/model/supertype_expressions/oneof_supertype_expression"
174
- end
175
- end
176
-
177
- # Autoload for Package module classes
178
- module Package
179
- autoload :Metadata, "expressir/package/metadata"
180
- autoload :Builder, "expressir/package/builder"
181
- autoload :Reader, "expressir/package/reader"
182
- end
183
-
184
- # Autoload for Commands module classes
185
- module Commands
186
- autoload :Base, "expressir/commands/base"
187
- autoload :Benchmark, "expressir/commands/benchmark"
188
- autoload :BenchmarkCache, "expressir/commands/benchmark_cache"
189
- autoload :Clean, "expressir/commands/clean"
190
- autoload :ImportComparison, "expressir/commands/import_comparison"
191
- autoload :Coverage, "expressir/commands/coverage"
192
- autoload :Format, "expressir/commands/format"
193
- autoload :Validate, "expressir/commands/validate"
194
- autoload :Version, "expressir/commands/version"
195
- end
196
-
197
- # Autoload for Changes module classes
198
- module Changes
199
- autoload :SchemaChange, "expressir/changes/schema_change"
200
- autoload :VersionChange, "expressir/changes/version_change"
201
- autoload :ItemChange, "expressir/changes/item_change"
202
- autoload :MappingChange, "expressir/changes/mapping_change"
203
- end
204
56
  end