decode 0.23.3 → 0.23.4

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 (49) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/agent.md +31 -0
  4. data/bake/decode/index.rb +1 -1
  5. data/lib/decode/comment/attribute.rb +1 -1
  6. data/lib/decode/comment/node.rb +2 -4
  7. data/lib/decode/comment/parameter.rb +1 -1
  8. data/lib/decode/comment/pragma.rb +1 -1
  9. data/lib/decode/comment/returns.rb +1 -1
  10. data/lib/decode/comment/tag.rb +1 -1
  11. data/lib/decode/comment/tags.rb +1 -1
  12. data/lib/decode/comment/text.rb +1 -1
  13. data/lib/decode/comment/yields.rb +1 -1
  14. data/lib/decode/definition.rb +1 -1
  15. data/lib/decode/documentation.rb +1 -1
  16. data/lib/decode/index.rb +1 -1
  17. data/lib/decode/language/generic.rb +1 -1
  18. data/lib/decode/language/reference.rb +1 -1
  19. data/lib/decode/language/ruby/alias.rb +1 -1
  20. data/lib/decode/language/ruby/attribute.rb +1 -1
  21. data/lib/decode/language/ruby/block.rb +1 -1
  22. data/lib/decode/language/ruby/call.rb +3 -3
  23. data/lib/decode/language/ruby/class.rb +1 -1
  24. data/lib/decode/language/ruby/code.rb +3 -3
  25. data/lib/decode/language/ruby/constant.rb +1 -1
  26. data/lib/decode/language/ruby/definition.rb +1 -1
  27. data/lib/decode/language/ruby/function.rb +1 -1
  28. data/lib/decode/language/ruby/generic.rb +1 -1
  29. data/lib/decode/language/ruby/method.rb +1 -1
  30. data/lib/decode/language/ruby/module.rb +1 -1
  31. data/lib/decode/language/ruby/parser.rb +33 -15
  32. data/lib/decode/language/ruby/reference.rb +1 -1
  33. data/lib/decode/language/ruby/segment.rb +1 -1
  34. data/lib/decode/language/ruby.rb +1 -1
  35. data/lib/decode/languages.rb +1 -1
  36. data/lib/decode/location.rb +1 -1
  37. data/lib/decode/segment.rb +1 -1
  38. data/lib/decode/source.rb +1 -1
  39. data/lib/decode/syntax/link.rb +1 -1
  40. data/lib/decode/syntax/match.rb +1 -1
  41. data/lib/decode/syntax/rewriter.rb +1 -1
  42. data/lib/decode/trie.rb +5 -3
  43. data/lib/decode/version.rb +2 -2
  44. data/license.md +1 -1
  45. data/readme.md +15 -1
  46. data/releases.md +5 -0
  47. data.tar.gz.sig +0 -0
  48. metadata +3 -1
  49. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 624c9e07afc43e3c54cbf3e8bb7108c092082e96a43bbcca0f815bce273070ec
4
- data.tar.gz: 9c9a1d112155a53d17b570369a2bc9b1005e826e7891998ee6e2957283385f7d
3
+ metadata.gz: 6d918d6104a7b51fdf463bc40d3c5108dcfbae329064cb25395a988cb45c6aba
4
+ data.tar.gz: 7d303793cff2638b2b6c5a0527ab3cb0cfa3a33a0c4c1340436e03f0d7804602
5
5
  SHA512:
6
- metadata.gz: a9a85bd2c447f56b9ef17a9dae369d044f6807682d30152902005a4a2132141597859036a2e6eecda18fc7582666bf6a389d90230f1b7d41a9c8a529193fbf60
7
- data.tar.gz: e4775c9c24aa0eaa4c6ec0d6da3bc6866395645703a5e810ee61d87b61db88f159bde44859833eb63aa5fedb9dd947d3c20b5264810f3a95c531d04f837e7440
6
+ metadata.gz: 4fa8f8c71fb84a01414399a3f214d0870ee220225d2059ddb4416cb00bd7e4425ddf4c81c6c5a02ade8d53d9462f0be1544b4dd514b3b57d9dd3e052225fe269
7
+ data.tar.gz: 81174c0ff895f8ade0f80ad31216bcfeb13080173728c186fba4d37843ca45c551438a5401d865d32bef97e8416b5ab4bebaa5983949f43b8e22d56591d139ce
checksums.yaml.gz.sig CHANGED
Binary file
data/agent.md ADDED
@@ -0,0 +1,31 @@
1
+ # Agent
2
+
3
+ ## Context
4
+
5
+ This section provides links to documentation from installed packages. It is automatically generated and may be updated by running `bake agent:context:install`.
6
+
7
+ **Important:** Before performing any code, documentation, or analysis tasks, always read and apply the full content of any relevant documentation referenced in the following sections. These context files contain authoritative standards and best practices for documentation, code style, and project-specific workflows. **Do not proceed with any actions until you have read and incorporated the guidance from relevant context files.**
8
+
9
+ ### agent-context
10
+
11
+ Install and manage context files from Ruby gems.
12
+
13
+ #### [Usage Guide](.context/agent-context/usage.md)
14
+
15
+ `agent-context` is a tool that helps you discover and install contextual information from Ruby gems for AI agents. Gems can provide additional documentation, examples, and guidance in a `context/` ...
16
+
17
+ ### sus
18
+
19
+ A fast and scalable test runner.
20
+
21
+ #### [Using Sus Testing Framework](.context/sus/usage.md)
22
+
23
+ Sus is a modern Ruby testing framework that provides a clean, BDD-style syntax for writing tests. It's designed to be fast, simple, and expressive.
24
+
25
+ #### [Mocking](.context/sus/mocking.md)
26
+
27
+ There are two types of mocking in sus: `receive` and `mock`. The `receive` matcher is a subset of full mocking and is used to set expectations on method calls, while `mock` can be used to replace m...
28
+
29
+ #### [Shared Test Behaviors and Fixtures](.context/sus/shared.md)
30
+
31
+ Sus provides shared test contexts which can be used to define common behaviours or tests that can be reused across one or more test files.
data/bake/decode/index.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  def initialize(...)
7
7
  super
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "tag"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
7
  module Comment
@@ -63,9 +63,7 @@ module Decode
63
63
  # @parameter node [Node] The current node which is being traversed.
64
64
  # @parameter descend [Proc | Nil] The recursive method for traversing children.
65
65
  def traverse(&block)
66
- descend = ->(node){
67
- node.traverse(&block)
68
- }
66
+ descend = ->(node){node.traverse(&block)}
69
67
 
70
68
  yield(self, descend)
71
69
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "tag"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "tag"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "attribute"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "node"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "text"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "node"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "tag"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "location"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "comment/node"
7
7
 
data/lib/decode/index.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "source"
7
7
  require_relative "trie"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "reference"
7
7
  require_relative "../documentation"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
7
  module Language
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -33,8 +33,8 @@ module Decode
33
33
  else
34
34
  # For multiline calls, use the actual call name with arguments
35
35
  if @node.arguments && @node.arguments.arguments.any?
36
- arg_text = @node.arguments.arguments.map { |arg| arg.location.slice }.join(", ")
37
- "#{@node.name}(#{arg_text})"
36
+ argument_text = @node.arguments.arguments.map {|argument| argument.location.slice}.join(", ")
37
+ "#{@node.name}(#{argument_text})"
38
38
  else
39
39
  @node.name.to_s
40
40
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
  require_relative "../../syntax/link"
@@ -58,8 +58,8 @@ module Decode
58
58
 
59
59
  # Extract constants from arguments:
60
60
  if node.arguments
61
- node.arguments.arguments.each do |arg_node|
62
- traverse(arg_node, into)
61
+ node.arguments.arguments.each do |argument_node|
62
+ traverse(argument_node, into)
63
63
  end
64
64
  end
65
65
  when :constant_read_node
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "method"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2024, by Samuel Williams.
4
+ # Copyright, 2021-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "reference"
7
7
  require_relative "parser"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "definition"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require "prism"
7
7
 
@@ -158,17 +158,17 @@ module Decode
158
158
  # Handle cases like "private def foo" where method definitions are arguments
159
159
  if node.arguments
160
160
  has_method_definitions = false
161
- node.arguments.arguments.each do |arg_node|
162
- if arg_node.type == :def_node
161
+ node.arguments.arguments.each do |argument_node|
162
+ if argument_node.type == :def_node
163
163
  has_method_definitions = true
164
164
  # Process the method definition with the specified visibility
165
- receiver = receiver_for(arg_node.receiver)
165
+ receiver = receiver_for(argument_node.receiver)
166
166
 
167
- definition = Method.new(arg_node.name,
167
+ definition = Method.new(argument_node.name,
168
168
  visibility: name,
169
- comments: comments_for(arg_node),
169
+ comments: comments_for(argument_node),
170
170
  parent: parent,
171
- node: arg_node,
171
+ node: argument_node,
172
172
  language: @language,
173
173
  receiver: receiver,
174
174
  )
@@ -224,7 +224,7 @@ module Decode
224
224
  else
225
225
  # Check if this call should be treated as a definition
226
226
  # either because it has a @name comment, @attribute comment, or a block
227
- has_name_comment = comments_for(node).any? { |comment| comment.match(NAME_ATTRIBUTE) }
227
+ has_name_comment = comments_for(node).any? {|comment| comment.match(NAME_ATTRIBUTE)}
228
228
  has_attribute_comment = kind_for(node, comments_for(node))
229
229
  has_block = node.block
230
230
 
@@ -258,6 +258,24 @@ module Decode
258
258
  )
259
259
 
260
260
  yield definition
261
+ when :if_node
262
+ # Walk the 'if' branch (statements):
263
+ if node.statements
264
+ walk_definitions(node.statements, parent, source, &block)
265
+ end
266
+ # Walk the 'else' or 'elsif' branch (subsequent):
267
+ if node.subsequent
268
+ walk_definitions(node.subsequent, parent, source, &block)
269
+ end
270
+ when :unless_node
271
+ # Walk the 'unless' branch (statements):
272
+ if node.statements
273
+ walk_definitions(node.statements, parent, source, &block)
274
+ end
275
+ # Walk the 'else' branch (else_clause):
276
+ if node.else_clause
277
+ walk_definitions(node.else_clause, parent, source, &block)
278
+ end
261
279
  else
262
280
  if node.respond_to?(:statements)
263
281
  walk_definitions(node.statements, parent, source, &block)
@@ -471,15 +489,15 @@ module Decode
471
489
  statements = node.child_nodes
472
490
  current_segment = nil
473
491
 
474
- statements.each_with_index do |stmt, stmt_index|
492
+ statements.each_with_index do |statement, statement_index|
475
493
  # Find comments that precede this statement and are not inside previous statements
476
494
  preceding_comments = []
477
- last_stmt_end_line = stmt_index > 0 ? statements[stmt_index - 1].location.end_line : 0
495
+ last_statement_end_line = statement_index > 0 ? statements[statement_index - 1].location.end_line : 0
478
496
 
479
497
  comments.each do |comment|
480
498
  comment_line = comment.location.start_line
481
499
  # Comment must be after the previous statement and before this statement
482
- if comment_line > last_stmt_end_line && comment_line < stmt.location.start_line
500
+ if comment_line > last_statement_end_line && comment_line < statement.location.start_line
483
501
  preceding_comments << comment
484
502
  end
485
503
  end
@@ -491,19 +509,19 @@ module Decode
491
509
  # Start a new segment with these comments
492
510
  yield current_segment if current_segment
493
511
  current_segment = Segment.new(
494
- preceding_comments.map { |c| c.location.slice.sub(/^#[\s\t]?/, "") },
512
+ preceding_comments.map {|comment| comment.location.slice.sub(/^#[\s\t]?/, "")},
495
513
  @language,
496
- stmt
514
+ statement
497
515
  )
498
516
  elsif current_segment
499
517
  # Extend current segment with this statement
500
- current_segment.expand(stmt)
518
+ current_segment.expand(statement)
501
519
  else
502
520
  # Start a new segment without comments
503
521
  current_segment = Segment.new(
504
522
  [],
505
523
  @language,
506
- stmt
524
+ statement
507
525
  )
508
526
  end
509
527
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../reference"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../segment"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "ruby/generic"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "language/generic"
7
7
  require_relative "language/ruby"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2022-2024, by Samuel Williams.
4
+ # Copyright, 2022-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
7
  # Represents a location in a source file.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "documentation"
7
7
 
data/lib/decode/source.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "language"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "match"
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
7
  module Syntax
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
7
  module Syntax
data/lib/decode/trie.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  require_relative "source"
7
7
 
@@ -55,11 +55,13 @@ module Decode
55
55
  # @parameter node [Node] The current node which is being traversed.
56
56
  # @parameter descend [Proc] The recursive method for traversing children.
57
57
  def traverse(path = [], &block)
58
- yield(path, self, ->{
58
+ descend = lambda do
59
59
  @children.each do |name, node|
60
60
  node.traverse([*path, name], &block)
61
61
  end
62
- })
62
+ end
63
+
64
+ yield(path, self, descend)
63
65
  end
64
66
  end
65
67
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
4
+ # Copyright, 2020-2025, by Samuel Williams.
5
5
 
6
6
  module Decode
7
- VERSION = "0.23.3"
7
+ VERSION = "0.23.4"
8
8
  end
data/license.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2020-2024, by Samuel Williams.
3
+ Copyright, 2020-2025, by Samuel Williams.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -10,7 +10,21 @@ As part of my effort to build [better project documentation](https://github.com/
10
10
 
11
11
  ## Usage
12
12
 
13
- Please see the [project documentation](https://ioquatix.github.io/decode/).
13
+ Please see the [project documentation](https://ioquatix.github.io/decode/) for more details.
14
+
15
+ - [Getting Started](https://ioquatix.github.io/decode/guides/getting-started/index) - This guide explains how to use `decode` for source code analysis.
16
+
17
+ - [Code Coverage](https://ioquatix.github.io/decode/guides/code-coverage/index) - This guide explains how to compute documentation code coverage.
18
+
19
+ - [Extract Symbols](https://ioquatix.github.io/decode/guides/extract-symbols/index) - This example demonstrates how to extract symbols using the index. An instance of <code class="language-ruby">Decode::Index</code> is used for loading symbols from source code files. These symbols are available as a flat list and as a trie structure. You can look up specific symbols using a reference using <code class="language-ruby">Decode::Index\#lookup</code>.
20
+
21
+ ## Releases
22
+
23
+ Please see the [project releases](https://ioquatix.github.io/decode/releases/index) for all releases.
24
+
25
+ ### v0.23.4
26
+
27
+ - Fix handling of definitions nested within `if`/`unless`/`elsif`/`else` blocks.
14
28
 
15
29
  ## Contributing
16
30
 
data/releases.md ADDED
@@ -0,0 +1,5 @@
1
+ # Releases
2
+
3
+ ## v0.23.4
4
+
5
+ - Fix handling of definitions nested within `if`/`unless`/`elsif`/`else` blocks.
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.23.3
4
+ version: 0.23.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -56,6 +56,7 @@ executables: []
56
56
  extensions: []
57
57
  extra_rdoc_files: []
58
58
  files:
59
+ - agent.md
59
60
  - bake/decode/index.rb
60
61
  - context/coverage.md
61
62
  - context/getting-started.md
@@ -107,6 +108,7 @@ files:
107
108
  - lib/decode/version.rb
108
109
  - license.md
109
110
  - readme.md
111
+ - releases.md
110
112
  homepage: https://github.com/ioquatix/decode
111
113
  licenses:
112
114
  - MIT
metadata.gz.sig CHANGED
Binary file