expressir 2.4.45 → 2.4.46

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/conformance.yml +4 -0
  3. data/.github/workflows/performance-release.yml +3 -1
  4. data/lib/expressir/model/data_types/enumeration.rb +1 -1
  5. data/lib/expressir/model/data_types/select.rb +1 -1
  6. data/lib/expressir/model/declarations/entity.rb +7 -7
  7. data/lib/expressir/model/declarations/function.rb +9 -9
  8. data/lib/expressir/model/declarations/interface.rb +1 -1
  9. data/lib/expressir/model/declarations/interfaced_item.rb +2 -2
  10. data/lib/expressir/model/declarations/procedure.rb +9 -9
  11. data/lib/expressir/model/declarations/remark_item.rb +1 -1
  12. data/lib/expressir/model/declarations/rule.rb +11 -11
  13. data/lib/expressir/model/declarations/schema.rb +8 -8
  14. data/lib/expressir/model/declarations/schema_version.rb +1 -1
  15. data/lib/expressir/model/declarations/subtype_constraint.rb +1 -1
  16. data/lib/expressir/model/declarations/type.rb +2 -2
  17. data/lib/expressir/model/declarations/unique_rule.rb +1 -1
  18. data/lib/expressir/model/exp_file.rb +1 -1
  19. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  20. data/lib/expressir/model/expressions/entity_constructor.rb +1 -1
  21. data/lib/expressir/model/expressions/function_call.rb +1 -1
  22. data/lib/expressir/model/identifier.rb +3 -3
  23. data/lib/expressir/model/model_element.rb +1 -1
  24. data/lib/expressir/model/statements/alias.rb +1 -1
  25. data/lib/expressir/model/statements/case.rb +1 -1
  26. data/lib/expressir/model/statements/case_action.rb +1 -1
  27. data/lib/expressir/model/statements/compound.rb +1 -1
  28. data/lib/expressir/model/statements/if.rb +2 -2
  29. data/lib/expressir/model/statements/procedure_call.rb +1 -1
  30. data/lib/expressir/model/statements/repeat.rb +1 -1
  31. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +1 -1
  32. data/lib/expressir/version.rb +1 -1
  33. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 030143ad93022fdb6ec87b6114fc71cdcbba8a6984781bb1ceb700f9f324b814
4
- data.tar.gz: f7824e86e07bd46fbab8bb68da1877ad9df14485b6e6ff54d4ab4578925709d6
3
+ metadata.gz: dfc39b74ae5aed552c9487f7fe8a8e642947c76af8faaeb6a3efb9394b975e68
4
+ data.tar.gz: 38b6d067b885aa364b2027916b27b4ee2ab706a43c6a98da157c654638d309d8
5
5
  SHA512:
6
- metadata.gz: edbc1129475067c7003fd9574a9c97a9ed09b491c8eddad52638877daa8c2a96c98d761a5edc8a513f7004250c6ccd6bb7a38a345b270eb02ffa0e99515e7c30
7
- data.tar.gz: 6648e2b1d5c7ed1033a3625625d90c5e7759142f12b737eccc6a73978d53b832f419767155db3f9f6b49bb4c9219800bceddcb6c758aa28ebf843e43a79841ad
6
+ metadata.gz: e6554fc3447df08d8093e4bbde2956485b6fbcbeede516899a2f013f0fe81c7bc1afc7635ad6c5afb46ee69c82cc14c36d415997ff10b742307ae8028c6088e9
7
+ data.tar.gz: 8d069223f80dbaa4c7e282467c054e6488ca02f5a2def0860cd1c6ddb7bdf147a0c515e572e17310a7250124218cf8ac25ff760c69c7989e2b4bdacd349948d0
@@ -15,6 +15,10 @@ jobs:
15
15
  repository: metanorma/iso-10303-stepmod
16
16
  path: stepmod
17
17
  sparse-checkout: data/resources
18
+ # the stepmod corpus is a PRIVATE metanorma repo; the default
19
+ # GITHUB_TOKEN is scoped to lutaml/expressir and got a 404 on
20
+ # every scheduled run since the workflow was added (2026-10-21)
21
+ token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
18
22
  - uses: ruby/setup-ruby@v1
19
23
  with:
20
24
  ruby-version: "3.4"
@@ -105,7 +105,9 @@ jobs:
105
105
  TAG=${TAG:-$(gh release view --json tagName --jq .tagName)}
106
106
  echo "Reporting against $TAG"
107
107
  gh release view "$TAG" --json body --jq .body > /tmp/body.md
108
- ruby -e '
108
+ # bundle exec: the expressir gem is linked through the Gemfile's
109
+ # gemspec — bare ruby cannot load it (LoadError, 2026-10-26+ runs)
110
+ bundle exec ruby -e '
109
111
  require "json"
110
112
  require "expressir"
111
113
  require "expressir/scoreboard"
@@ -6,7 +6,7 @@ module Expressir
6
6
  class Enumeration < ModelElement
7
7
  attribute :extensible, :boolean
8
8
  attribute :based_on, ModelElement
9
- attribute :items, EnumerationItem, collection: true
9
+ attribute :items, EnumerationItem, collection: true, initialize_empty: true
10
10
  attribute :_class, :string, default: -> { self.class.name }
11
11
 
12
12
  key_value do
@@ -7,7 +7,7 @@ module Expressir
7
7
  attribute :extensible, :boolean
8
8
  attribute :generic_entity, :boolean
9
9
  attribute :based_on, ModelElement
10
- attribute :items, ModelElement, collection: true
10
+ attribute :items, ModelElement, collection: true, initialize_empty: true
11
11
  attribute :_class, :string, default: -> { self.class.name }
12
12
 
13
13
  key_value do
@@ -16,19 +16,19 @@ module Expressir
16
16
 
17
17
  attribute :abstract, :boolean
18
18
  attribute :supertype_expression, ModelElement
19
- attribute :subtype_of, ModelElement, collection: true
19
+ attribute :subtype_of, ModelElement, collection: true, initialize_empty: true
20
20
  # Heterogeneous by design: Attribute, DerivedAttribute, and
21
21
  # InverseAttribute all live here (the builders concatenate the
22
22
  # three clauses in declaration order). The ModelElement base
23
23
  # keeps from_hash polymorphic via the _class marker, exactly
24
24
  # like the Ruby-built model.
25
- attribute :attributes, ModelElement, collection: true
26
- attribute :derived_attributes, DerivedAttribute, collection: true
27
- attribute :inverse_attributes, InverseAttribute, collection: true
28
- attribute :unique_rules, UniqueRule, collection: true
29
- attribute :where_rules, WhereRule, collection: true
25
+ attribute :attributes, ModelElement, collection: true, initialize_empty: true
26
+ attribute :derived_attributes, DerivedAttribute, collection: true, initialize_empty: true
27
+ attribute :inverse_attributes, InverseAttribute, collection: true, initialize_empty: true
28
+ attribute :unique_rules, UniqueRule, collection: true, initialize_empty: true
29
+ attribute :where_rules, WhereRule, collection: true, initialize_empty: true
30
30
  attribute :informal_propositions, InformalPropositionRule,
31
- collection: true
31
+ collection: true, initialize_empty: true
32
32
  attribute :_class, :string, default: -> { self.class.name }
33
33
 
34
34
  key_value do
@@ -12,16 +12,16 @@ module Expressir
12
12
  :constants, :variables, :statements,
13
13
  :remark_items
14
14
 
15
- attribute :parameters, Parameter, collection: true
15
+ attribute :parameters, Parameter, collection: true, initialize_empty: true
16
16
  attribute :return_type, ModelElement
17
- attribute :types, ModelElement, collection: true
18
- attribute :entities, Entity, collection: true
19
- attribute :subtype_constraints, SubtypeConstraint, collection: true
20
- attribute :functions, Function, collection: true
21
- attribute :procedures, Procedure, collection: true
22
- attribute :constants, Constant, collection: true
23
- attribute :variables, Variable, collection: true
24
- attribute :statements, ModelElement, collection: true
17
+ attribute :types, ModelElement, collection: true, initialize_empty: true
18
+ attribute :entities, Entity, collection: true, initialize_empty: true
19
+ attribute :subtype_constraints, SubtypeConstraint, collection: true, initialize_empty: true
20
+ attribute :functions, Function, collection: true, initialize_empty: true
21
+ attribute :procedures, Procedure, collection: true, initialize_empty: true
22
+ attribute :constants, Constant, collection: true, initialize_empty: true
23
+ attribute :variables, Variable, collection: true, initialize_empty: true
24
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
25
25
  attribute :_class, :string, default: -> { self.class.name }
26
26
 
27
27
  key_value do
@@ -12,7 +12,7 @@ module Expressir
12
12
 
13
13
  attribute :kind, :string, values: %w[USE REFERENCE]
14
14
  attribute :schema, ModelElement
15
- attribute :items, InterfaceItem, collection: true
15
+ attribute :items, InterfaceItem, collection: true, initialize_empty: true
16
16
  attribute :_class, :string, default: -> { self.class.name }
17
17
 
18
18
  # Registers :items with the tree-walker registry: the position index
@@ -8,8 +8,8 @@ module Expressir
8
8
  include HasRemarks
9
9
 
10
10
  attribute :id, :string
11
- attribute :remarks, :string, collection: true
12
- attribute :remark_items, RemarkItem, collection: true
11
+ attribute :remarks, :string, collection: true, initialize_empty: true
12
+ attribute :remark_items, RemarkItem, collection: true, initialize_empty: true
13
13
  attribute :base_item, ModelElement
14
14
  attribute :_class, :string, default: -> { self.class.name }
15
15
 
@@ -12,15 +12,15 @@ module Expressir
12
12
  :constants, :variables, :statements,
13
13
  :remark_items
14
14
 
15
- attribute :parameters, Parameter, collection: true
16
- attribute :types, ModelElement, collection: true
17
- attribute :entities, Entity, collection: true
18
- attribute :subtype_constraints, SubtypeConstraint, collection: true
19
- attribute :functions, Function, collection: true
20
- attribute :procedures, Procedure, collection: true
21
- attribute :constants, Constant, collection: true
22
- attribute :variables, Variable, collection: true
23
- attribute :statements, ModelElement, collection: true
15
+ attribute :parameters, Parameter, collection: true, initialize_empty: true
16
+ attribute :types, ModelElement, collection: true, initialize_empty: true
17
+ attribute :entities, Entity, collection: true, initialize_empty: true
18
+ attribute :subtype_constraints, SubtypeConstraint, collection: true, initialize_empty: true
19
+ attribute :functions, Function, collection: true, initialize_empty: true
20
+ attribute :procedures, Procedure, collection: true, initialize_empty: true
21
+ attribute :constants, Constant, collection: true, initialize_empty: true
22
+ attribute :variables, Variable, collection: true, initialize_empty: true
23
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
24
24
  attribute :_class, :string, default: -> { self.class.name }
25
25
 
26
26
  key_value do
@@ -7,7 +7,7 @@ module Expressir
7
7
  include HasRemarks
8
8
 
9
9
  attribute :id, :string
10
- attribute :remarks, :string, collection: true
10
+ attribute :remarks, :string, collection: true, initialize_empty: true
11
11
  attribute :_class, :string, default: -> { self.class.name }
12
12
 
13
13
  key_value do
@@ -15,18 +15,18 @@ module Expressir
15
15
  :where_rules, :informal_propositions,
16
16
  :remark_items
17
17
 
18
- attribute :applies_to, ModelElement, collection: true
19
- attribute :types, ModelElement, collection: true
20
- attribute :entities, Entity, collection: true
21
- attribute :subtype_constraints, SubtypeConstraint, collection: true
22
- attribute :functions, Function, collection: true
23
- attribute :procedures, Procedure, collection: true
24
- attribute :constants, Constant, collection: true
25
- attribute :variables, Variable, collection: true
26
- attribute :statements, ModelElement, collection: true
27
- attribute :where_rules, WhereRule, collection: true
18
+ attribute :applies_to, ModelElement, collection: true, initialize_empty: true
19
+ attribute :types, ModelElement, collection: true, initialize_empty: true
20
+ attribute :entities, Entity, collection: true, initialize_empty: true
21
+ attribute :subtype_constraints, SubtypeConstraint, collection: true, initialize_empty: true
22
+ attribute :functions, Function, collection: true, initialize_empty: true
23
+ attribute :procedures, Procedure, collection: true, initialize_empty: true
24
+ attribute :constants, Constant, collection: true, initialize_empty: true
25
+ attribute :variables, Variable, collection: true, initialize_empty: true
26
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
27
+ attribute :where_rules, WhereRule, collection: true, initialize_empty: true
28
28
  attribute :informal_propositions, InformalPropositionRule,
29
- collection: true
29
+ collection: true, initialize_empty: true
30
30
  attribute :_class, :string, default: -> { self.class.name }
31
31
 
32
32
  key_value do
@@ -25,14 +25,14 @@ module Expressir
25
25
 
26
26
  attribute :file, :string
27
27
  attribute :version, SchemaVersion
28
- attribute :interfaces, Interface, collection: true
29
- attribute :constants, Constant, collection: true
30
- attribute :types, ModelElement, collection: true
31
- attribute :entities, Entity, collection: true
32
- attribute :subtype_constraints, SubtypeConstraint, collection: true
33
- attribute :functions, Function, collection: true
34
- attribute :rules, Rule, collection: true
35
- attribute :procedures, Procedure, collection: true
28
+ attribute :interfaces, Interface, collection: true, initialize_empty: true
29
+ attribute :constants, Constant, collection: true, initialize_empty: true
30
+ attribute :types, ModelElement, collection: true, initialize_empty: true
31
+ attribute :entities, Entity, collection: true, initialize_empty: true
32
+ attribute :subtype_constraints, SubtypeConstraint, collection: true, initialize_empty: true
33
+ attribute :functions, Function, collection: true, initialize_empty: true
34
+ attribute :rules, Rule, collection: true, initialize_empty: true
35
+ attribute :procedures, Procedure, collection: true, initialize_empty: true
36
36
  attribute :header, :string
37
37
  attribute :_class, :string, default: -> { self.class.name }
38
38
  attribute :selected, :boolean, default: false
@@ -5,7 +5,7 @@ module Expressir
5
5
  # - section 9.3 Schema
6
6
  class SchemaVersion < ModelElement
7
7
  attribute :value, :string
8
- attribute :items, SchemaVersionItem, collection: true
8
+ attribute :items, SchemaVersionItem, collection: true, initialize_empty: true
9
9
  attribute :_class, :string, default: -> { self.class.name }
10
10
 
11
11
  key_value do
@@ -8,7 +8,7 @@ module Expressir
8
8
 
9
9
  attribute :applies_to, ModelElement
10
10
  attribute :abstract, :boolean
11
- attribute :total_over, ModelElement, collection: true
11
+ attribute :total_over, ModelElement, collection: true, initialize_empty: true
12
12
  attribute :supertype_expression, ModelElement
13
13
  attribute :_class, :string, default: -> { self.class.name }
14
14
 
@@ -13,9 +13,9 @@ module Expressir
13
13
  :remark_items
14
14
 
15
15
  attribute :underlying_type, ModelElement
16
- attribute :where_rules, WhereRule, collection: true
16
+ attribute :where_rules, WhereRule, collection: true, initialize_empty: true
17
17
  attribute :informal_propositions, InformalPropositionRule,
18
- collection: true
18
+ collection: true, initialize_empty: true
19
19
  attribute :_class, :string, default: -> { self.class.name }
20
20
 
21
21
  key_value do
@@ -6,7 +6,7 @@ module Expressir
6
6
  class UniqueRule < ModelElement
7
7
  include Identifier
8
8
 
9
- attribute :attributes, ModelElement, collection: true
9
+ attribute :attributes, ModelElement, collection: true, initialize_empty: true
10
10
  attribute :_class, :string, default: -> { self.class.name }
11
11
 
12
12
  key_value do
@@ -17,7 +17,7 @@ module Expressir
17
17
  collection_attributes :schemas
18
18
 
19
19
  attribute :path, :string
20
- attribute :schemas, Declarations::Schema, collection: true,
20
+ attribute :schemas, Declarations::Schema, collection: true, initialize_empty: true,
21
21
  initialize_empty: true
22
22
  attribute :_class, :string, default: -> { self.class.name }
23
23
 
@@ -5,7 +5,7 @@ module Expressir
5
5
  # - section 12.9 Aggregate initializer
6
6
  class AggregateInitializer < ModelElement
7
7
  child_attributes :items
8
- attribute :items, ModelElement, collection: true
8
+ attribute :items, ModelElement, collection: true, initialize_empty: true
9
9
  attribute :_class, :string, default: -> { self.class.name }
10
10
 
11
11
  key_value do
@@ -6,7 +6,7 @@ module Expressir
6
6
  class EntityConstructor < ModelElement
7
7
  child_attributes :parameters
8
8
  attribute :entity, ModelElement
9
- attribute :parameters, ModelElement, collection: true
9
+ attribute :parameters, ModelElement, collection: true, initialize_empty: true
10
10
  attribute :_class, :string, default: -> { self.class.name }
11
11
 
12
12
  key_value do
@@ -6,7 +6,7 @@ module Expressir
6
6
  class FunctionCall < ModelElement
7
7
  child_attributes :parameters
8
8
  attribute :function, ModelElement
9
- attribute :parameters, ModelElement, collection: true
9
+ attribute :parameters, ModelElement, collection: true, initialize_empty: true
10
10
  attribute :_class, :string, default: -> { self.class.name }
11
11
 
12
12
  key_value do
@@ -8,11 +8,11 @@ module Expressir
8
8
  mod.include(HasRemarks)
9
9
 
10
10
  mod.attribute :id, :string
11
- mod.attribute :remarks, :string, collection: true
11
+ mod.attribute :remarks, :string, collection: true, initialize_empty: true
12
12
  mod.attribute :remark_items,
13
- ::Expressir::Model::Declarations::RemarkItem, collection: true
13
+ ::Expressir::Model::Declarations::RemarkItem, collection: true, initialize_empty: true
14
14
  mod.attribute :untagged_remarks, ::Expressir::Model::RemarkInfo,
15
- collection: true
15
+ collection: true, initialize_empty: true
16
16
 
17
17
  mod.key_value do
18
18
  map "id", to: :id
@@ -75,7 +75,7 @@ module Expressir
75
75
  polymorphic_class: true
76
76
  attribute :source, :string
77
77
  attribute :source_offset, :integer
78
- attribute :untagged_remarks, RemarkInfo, collection: true
78
+ attribute :untagged_remarks, RemarkInfo, collection: true, initialize_empty: true
79
79
 
80
80
  POLYMORPHIC_CLASS_MAP = {
81
81
  "Expressir::Model::Cache" => "Expressir::Model::Cache",
@@ -9,7 +9,7 @@ module Expressir
9
9
 
10
10
  collection_attributes :statements
11
11
  attribute :expression, ModelElement
12
- attribute :statements, ModelElement, collection: true
12
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
13
13
  attribute :_class, :string, default: -> { self.class.name }
14
14
 
15
15
  key_value do
@@ -15,7 +15,7 @@ module Expressir
15
15
 
16
16
  child_attributes :expression
17
17
  attribute :expression, ModelElement
18
- attribute :actions, CaseAction, collection: true
18
+ attribute :actions, CaseAction, collection: true, initialize_empty: true
19
19
  attribute :otherwise_statement, ModelElement
20
20
  attribute :_class, :string, default: -> { self.class.name }
21
21
 
@@ -5,7 +5,7 @@ module Expressir
5
5
  # - section 13.4 Case statement
6
6
  class CaseAction < ModelElement
7
7
  child_attributes :expression
8
- attribute :labels, ModelElement, collection: true
8
+ attribute :labels, ModelElement, collection: true, initialize_empty: true
9
9
  attribute :statement, ModelElement
10
10
  attribute :_class, :string, default: -> { self.class.name }
11
11
 
@@ -7,7 +7,7 @@ module Expressir
7
7
  include Statement
8
8
 
9
9
  collection_attributes :statements
10
- attribute :statements, ModelElement, collection: true
10
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
11
11
  attribute :_class, :string, default: -> { self.class.name }
12
12
 
13
13
  key_value do
@@ -9,8 +9,8 @@ module Expressir
9
9
  collection_attributes :statements, :else_statements
10
10
  child_attributes :expression
11
11
  attribute :expression, ModelElement
12
- attribute :statements, ModelElement, collection: true
13
- attribute :else_statements, ModelElement, collection: true
12
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
13
+ attribute :else_statements, ModelElement, collection: true, initialize_empty: true
14
14
  attribute :_class, :string, default: -> { self.class.name }
15
15
 
16
16
  key_value do
@@ -7,7 +7,7 @@ module Expressir
7
7
  include Statement
8
8
 
9
9
  attribute :procedure, ModelElement
10
- attribute :parameters, ModelElement, collection: true
10
+ attribute :parameters, ModelElement, collection: true, initialize_empty: true
11
11
  attribute :_class, :string, default: -> { self.class.name }
12
12
 
13
13
  key_value do
@@ -14,7 +14,7 @@ module Expressir
14
14
  attribute :increment, ModelElement
15
15
  attribute :while_expression, ModelElement
16
16
  attribute :until_expression, ModelElement
17
- attribute :statements, ModelElement, collection: true
17
+ attribute :statements, ModelElement, collection: true, initialize_empty: true
18
18
  attribute :_class, :string, default: -> { self.class.name }
19
19
 
20
20
  key_value do
@@ -4,7 +4,7 @@ module Expressir
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 9.2.5.2 ONEOF
6
6
  class OneofSupertypeExpression < ModelElement
7
- attribute :operands, ModelElement, collection: true
7
+ attribute :operands, ModelElement, collection: true, initialize_empty: true
8
8
  attribute :_class, :string, default: -> { self.class.name }
9
9
 
10
10
  key_value do
@@ -3,6 +3,6 @@ module Expressir
3
3
  # autoload it (Ruby autoload only works for module/class constants, not
4
4
  # for string constants like `Expressir::VERSION`).
5
5
  module Version
6
- VERSION = "2.4.45".freeze
6
+ VERSION = "2.4.46".freeze
7
7
  end
8
8
  end
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.4.45
4
+ version: 2.4.46
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-10-28 00:00:00.000000000 Z
11
+ date: 2026-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys