expressir 2.3.5 → 2.3.7

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -1
  3. data/.gitignore +2 -0
  4. data/.rubocop_todo.yml +17 -12
  5. data/CHANGELOG.md +159 -0
  6. data/docs/_guides/ler/step-packages.adoc +385 -0
  7. data/lib/expressir/coverage.rb +4 -4
  8. data/lib/expressir/express/builder.rb +1 -1
  9. data/lib/expressir/express/builder_registry.rb +12 -35
  10. data/lib/expressir/express/builders/constant_builder.rb +8 -2
  11. data/lib/expressir/express/builders/expression_builder.rb +2 -2
  12. data/lib/expressir/express/builders/helpers.rb +2 -8
  13. data/lib/expressir/express/builders/procedure_decl_builder.rb +2 -1
  14. data/lib/expressir/express/builders/qualifier_builder.rb +2 -1
  15. data/lib/expressir/express/builders/statement_builder.rb +18 -5
  16. data/lib/expressir/express/builders/type_builder.rb +20 -12
  17. data/lib/expressir/express/formatter.rb +32 -164
  18. data/lib/expressir/express/formatters/data_types_formatter.rb +51 -8
  19. data/lib/expressir/express/formatters/declarations_formatter.rb +47 -8
  20. data/lib/expressir/express/formatters/expressions_formatter.rb +27 -9
  21. data/lib/expressir/express/formatters/literals_formatter.rb +12 -5
  22. data/lib/expressir/express/formatters/references_formatter.rb +10 -1
  23. data/lib/expressir/express/formatters/remark_formatter.rb +1 -89
  24. data/lib/expressir/express/formatters/remark_item_formatter.rb +5 -4
  25. data/lib/expressir/express/formatters/statements_formatter.rb +32 -9
  26. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +7 -3
  27. data/lib/expressir/express/hyperlink_formatter.rb +1 -3
  28. data/lib/expressir/express/model_visitor.rb +1 -1
  29. data/lib/expressir/express/pretty_formatter.rb +31 -108
  30. data/lib/expressir/express/remark_attacher.rb +118 -88
  31. data/lib/expressir/express/schema_head_formatter.rb +1 -3
  32. data/lib/expressir/model/concerns.rb +6 -0
  33. data/lib/expressir/model/declarations/function.rb +0 -1
  34. data/lib/expressir/model/declarations/interface_item.rb +2 -0
  35. data/lib/expressir/model/declarations/interfaced_item.rb +3 -0
  36. data/lib/expressir/model/declarations/procedure.rb +0 -1
  37. data/lib/expressir/model/declarations/remark_item.rb +3 -0
  38. data/lib/expressir/model/declarations/schema.rb +7 -5
  39. data/lib/expressir/model/exp_file.rb +1 -0
  40. data/lib/expressir/model/identifier.rb +3 -1
  41. data/lib/expressir/model/model_element.rb +3 -3
  42. data/lib/expressir/model/repository.rb +8 -0
  43. data/lib/expressir/model/search_engine.rb +1 -1
  44. data/lib/expressir/package/reader.rb +9 -24
  45. data/lib/expressir/version.rb +1 -1
  46. metadata +4 -2
@@ -120,7 +120,7 @@ module Expressir
120
120
  loop do
121
121
  # Skip adding the id if this is a RemarkItem that belongs to an InformalPropositionRule
122
122
  # and has the same id as its parent
123
- if !(current_node.is_a? References::SimpleReference) && current_node.class.method_defined?(:id) &&
123
+ if !(current_node.is_a? References::SimpleReference) && current_node.is_a?(HasId) &&
124
124
  !(is_a?(Declarations::RemarkItem) &&
125
125
  parent.is_a?(Declarations::InformalPropositionRule) &&
126
126
  id == parent.id)
@@ -200,7 +200,7 @@ module Expressir
200
200
  self.untagged_remarks ||= []
201
201
  return unless remark_info.is_a?(RemarkInfo)
202
202
 
203
- self.untagged_remarks << remark_info
203
+ untagged_remarks << remark_info
204
204
  end
205
205
 
206
206
  private
@@ -208,7 +208,7 @@ module Expressir
208
208
  # @return [nil]
209
209
  def attach_parent_to_children
210
210
  self.class.attributes.each_pair do |symbol, _lutaml_attr|
211
- value = send(symbol)
211
+ value = public_send(symbol)
212
212
 
213
213
  case value
214
214
  when Array
@@ -24,6 +24,14 @@ module Expressir
24
24
  # Index instances (lazy-loaded)
25
25
  attr_reader :entity_index, :type_index, :reference_index
26
26
 
27
+ # Restore deserialized indexes (used by Package::Reader)
28
+ def restore_indexes(entity_index: nil, type_index: nil,
29
+ reference_index: nil)
30
+ @entity_index = entity_index if entity_index
31
+ @type_index = type_index if type_index
32
+ @reference_index = reference_index if reference_index
33
+ end
34
+
27
35
  # Internal schema storage for direct manipulation
28
36
  attr_reader :_schemas
29
37
 
@@ -327,7 +327,7 @@ module Expressir
327
327
  # Guard against nil schemas array
328
328
  return [] unless schemas
329
329
 
330
- schemas.flat_map { |s| s.send(method) || [] }
330
+ schemas.flat_map { |s| s.public_send(method) || [] }
331
331
  end
332
332
 
333
333
  # Collect all attributes from entities
@@ -132,32 +132,17 @@ module Expressir
132
132
  # @param repository [Model::Repository] Repository instance
133
133
  # @return [void]
134
134
  def load_indexes(zip, repository)
135
- # Load entity index
136
- entity_index_entry = zip.find_entry("entity_index.marshal")
137
- if entity_index_entry
138
- repository.instance_variable_set(
139
- :@entity_index,
140
- Marshal.load(entity_index_entry.get_input_stream.read),
141
- )
135
+ indexes = {}
136
+
137
+ %w[entity_index type_index reference_index].each do |name|
138
+ entry = zip.find_entry("#{name}.marshal")
139
+ if entry
140
+ indexes[name.to_sym] =
141
+ Marshal.load(entry.get_input_stream.read)
142
+ end
142
143
  end
143
144
 
144
- # Load type index
145
- type_index_entry = zip.find_entry("type_index.marshal")
146
- if type_index_entry
147
- repository.instance_variable_set(
148
- :@type_index,
149
- Marshal.load(type_index_entry.get_input_stream.read),
150
- )
151
- end
152
-
153
- # Load reference index
154
- reference_index_entry = zip.find_entry("reference_index.marshal")
155
- if reference_index_entry
156
- repository.instance_variable_set(
157
- :@reference_index,
158
- Marshal.load(reference_index_entry.get_input_stream.read),
159
- )
160
- end
145
+ repository.restore_indexes(**indexes) unless indexes.empty?
161
146
  end
162
147
  end
163
148
  end
@@ -1,3 +1,3 @@
1
1
  module Expressir
2
- VERSION = "2.3.5".freeze
2
+ VERSION = "2.3.7".freeze
3
3
  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.3.5
4
+ version: 2.3.7
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-05-12 00:00:00.000000000 Z
11
+ date: 2026-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -233,6 +233,7 @@ files:
233
233
  - ".rspec"
234
234
  - ".rubocop.yml"
235
235
  - ".rubocop_todo.yml"
236
+ - CHANGELOG.md
236
237
  - Gemfile
237
238
  - README.adoc
238
239
  - Rakefile
@@ -263,6 +264,7 @@ files:
263
264
  - docs/_guides/ler/loading-packages.adoc
264
265
  - docs/_guides/ler/package-formats.adoc
265
266
  - docs/_guides/ler/querying-packages.adoc
267
+ - docs/_guides/ler/step-packages.adoc
266
268
  - docs/_guides/ler/validating-packages.adoc
267
269
  - docs/_guides/liquid/basic-templates.adoc
268
270
  - docs/_guides/liquid/documentation-generation.adoc