decode 0.27.0 → 0.28.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65f2a545a291a4258d019ea79ea9c4cda2e4e15af778670b505ac7652d620ee3
4
- data.tar.gz: fa7d2328a1eba99917c23de03569575642ae587dbc049ab4a409d84e85824c57
3
+ metadata.gz: e70f7211133fa2733ce29e5f220f6d064d911e969de35fd57c6d11d66d9bacbf
4
+ data.tar.gz: fa6e984ae3633d29b2e8060fd650a9a69800ca561c4f8af3e3a3864b18016a44
5
5
  SHA512:
6
- metadata.gz: 78ac2928c18dc95f78aa181cadca912776e288781ef3f88c0fbd507faae38884d2d66dcf73770dafeb874aff4ef69a2ecec601b6b3e097be02154fe7a06f187b
7
- data.tar.gz: acef5f32fcb5b0ff49c076e706555c6eb2fbceed83abc9bd0f35557e72153fcde17fcd6cc31320eb9aee1c71fd73739554d757517b7105f8d080eee8ad71a0dc
6
+ metadata.gz: c3f0b53f4d6f3615aaef8901cd9dbe20cbc61770d3f136786ba4533a4016ef526936da28774ca1cb45d68d4d63219d4b44213f5afd21869f4c72d79ee8580863
7
+ data.tar.gz: 0531b4c5e10fe9aca3abb1ddadaa42eaca20199002786c159f68a8a8f3d60aff53641507a22b0ef6761928fa636b2f3b4fbe3e2296415e04af8f413fbd2c78e9
checksums.yaml.gz.sig CHANGED
Binary file
@@ -163,15 +163,36 @@ module Decode
163
163
 
164
164
  yield definition
165
165
  when :constant_write_node
166
- definition = Constant.new(node.name,
167
- comments: comments_for(node),
168
- parent: parent,
169
- node: node,
170
- language: @language,
171
- )
172
-
173
- store_definition(parent, node.name, definition)
174
- yield definition
166
+ if super_class = struct_super_class_for(node.value)
167
+ definition = Class.new([node.name],
168
+ super_class: super_class,
169
+ visibility: :public,
170
+ comments: comments_for(node),
171
+ parent: parent,
172
+ node: node,
173
+ language: @language,
174
+ source: source,
175
+ )
176
+
177
+ store_definition(parent, node.name, definition)
178
+ yield definition
179
+
180
+ if body = node.value.block&.body
181
+ with_visibility do
182
+ walk_definitions(body, definition, source, &block)
183
+ end
184
+ end
185
+ else
186
+ definition = Constant.new(node.name,
187
+ comments: comments_for(node),
188
+ parent: parent,
189
+ node: node,
190
+ language: @language,
191
+ )
192
+
193
+ store_definition(parent, node.name, definition)
194
+ yield definition
195
+ end
175
196
  when :call_node
176
197
  name = node.name
177
198
 
@@ -506,6 +527,24 @@ module Decode
506
527
  end
507
528
  end
508
529
 
530
+ def struct_super_class_for(node)
531
+ return unless node&.type == :call_node
532
+ return unless node.block
533
+
534
+ case node.receiver&.type
535
+ when :constant_read_node
536
+ receiver_name = node.receiver.name.to_s
537
+ when :constant_path_node
538
+ receiver_name = nested_name_for(node.receiver)
539
+ end
540
+
541
+ if receiver_name == "Struct" && node.name == :new
542
+ return "Struct"
543
+ elsif receiver_name == "Data" && node.name == :define
544
+ return "Data"
545
+ end
546
+ end
547
+
509
548
  def singleton_name_for(node)
510
549
  case node.expression.type
511
550
  when :self_node
@@ -5,5 +5,5 @@
5
5
 
6
6
  module Decode
7
7
  # @constant [String] The version of the gem.
8
- VERSION = "0.27.0"
8
+ VERSION = "0.28.0"
9
9
  end
data/readme.md CHANGED
@@ -24,6 +24,10 @@ Please see the [project documentation](https://socketry.github.io/decode/) for m
24
24
 
25
25
  Please see the [project releases](https://socketry.github.io/decode/releases/index) for all releases.
26
26
 
27
+ ### v0.28.0
28
+
29
+ - Add support for indexing methods inside `Struct.new` and `Data.define` assignment blocks.
30
+
27
31
  ### v0.27.0
28
32
 
29
33
  - Add `decode:documentation:markdown` bake task for generating LLM-optimized Markdown documentation.
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Releases
2
2
 
3
+ ## v0.28.0
4
+
5
+ - Add support for indexing methods inside `Struct.new` and `Data.define` assignment blocks.
6
+
3
7
  ## v0.27.0
4
8
 
5
9
  - Add `decode:documentation:markdown` bake task for generating LLM-optimized Markdown documentation.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  requirements: []
161
- rubygems_version: 4.0.6
161
+ rubygems_version: 4.0.10
162
162
  specification_version: 4
163
163
  summary: Code analysis for documentation generation.
164
164
  test_files: []
metadata.gz.sig CHANGED
Binary file