why_chain 0.2.0 → 0.2.1

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: a6b36f3e181fd925c701bfc22b05348a39044ca3158e42133091c123aca5dcb4
4
- data.tar.gz: c0e15d0ac8df970c25f4ea071a1965e13c3d57a77a0152b46440fa52585f3338
3
+ metadata.gz: 57709eb19a0190d1c1cde75dc2cb9b4a657edfd5b4a57cda237a7665b9b027f4
4
+ data.tar.gz: 76a6b127db4b8acaa90f4e7047e2d64d4d12ff5e8553c3faf48d8b20a6b23141
5
5
  SHA512:
6
- metadata.gz: 1c14db65f40546e42e636ca4a4863007b837683144a1f5c087090d30db29967cce9f208368d77eb25962626f3780e240f06889a8ddd3c3d5fac5ec2aaeadf26f
7
- data.tar.gz: 0675ed498b8c3407b40aebc7a809eda293ff9bcd5233b4ac2968569c610e914106c15a798f5bb7d8689c30d724e37d48345cb7c2ccdf9d6c2897a7d1cde0f2c2
6
+ metadata.gz: b1b2fd4c412353c75e0fc7b2645fae16bd76587e91b312785125e48487b5a7304c12ff72f4569955471fb9c657c3db474ac3190163860c1d9d166ad70bbcc78a
7
+ data.tar.gz: fce81cd5ebf55df0fe92a8ddcb6fb1667f836ca806cb323625447fe77e22c2ab4dd1ce3a260981f1cb7b0787b1a4f74e7b92680f84d42fe41da0800dd891de51
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.1] - 2026-05-11
4
+
5
+ - Refactor internals by extracting shared method-definition predicate into `MethodDefinition`.
6
+ - Remove duplicated visibility checks from `Tracer` and `MethodLocator` without behavior changes.
7
+
3
8
  ## [0.2.0] - 2026-05-11
4
9
 
5
10
  - Add `WhyChain.explain(object, method_name)` for human-readable dispatch output.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- why_chain (0.2.0)
4
+ why_chain (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WhyChain
4
+ # Shared predicate for direct method definitions in a lookup node.
5
+ module MethodDefinition
6
+ module_function
7
+
8
+ def defined_directly?(mod, method_name)
9
+ mod.method_defined?(method_name, false) ||
10
+ mod.private_method_defined?(method_name, false) ||
11
+ mod.protected_method_defined?(method_name, false)
12
+ end
13
+ end
14
+ end
@@ -15,16 +15,8 @@ module WhyChain
15
15
  return nil unless owner_index
16
16
 
17
17
  @lookup_chain[(owner_index + 1)..].find do |mod|
18
- defines_instance_method?(mod)
18
+ MethodDefinition.defined_directly?(mod, @method_name)
19
19
  end
20
20
  end
21
-
22
- private
23
-
24
- def defines_instance_method?(mod)
25
- mod.method_defined?(@method_name, false) ||
26
- mod.private_method_defined?(@method_name, false) ||
27
- mod.protected_method_defined?(@method_name, false)
28
- end
29
21
  end
30
22
  end
@@ -38,7 +38,7 @@ module WhyChain
38
38
 
39
39
  def steps
40
40
  lookup_chain.filter_map do |mod|
41
- next unless defines_instance_method?(mod)
41
+ next unless MethodDefinition.defined_directly?(mod, @method_name)
42
42
 
43
43
  DispatchStep.new(
44
44
  owner: mod,
@@ -46,11 +46,5 @@ module WhyChain
46
46
  )
47
47
  end
48
48
  end
49
-
50
- def defines_instance_method?(mod)
51
- mod.method_defined?(@method_name, false) ||
52
- mod.private_method_defined?(@method_name, false) ||
53
- mod.protected_method_defined?(@method_name, false)
54
- end
55
49
  end
56
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WhyChain
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
data/lib/why_chain.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "why_chain/version"
4
4
  require_relative "why_chain/tracer"
5
5
  require_relative "why_chain/dispatch_trace"
6
6
  require_relative "why_chain/dispatch_step"
7
+ require_relative "why_chain/method_definition"
7
8
  require_relative "why_chain/method_locator"
8
9
  require_relative "why_chain/explainer"
9
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: why_chain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - alessio salati
@@ -30,6 +30,7 @@ files:
30
30
  - lib/why_chain/dispatch_step.rb
31
31
  - lib/why_chain/dispatch_trace.rb
32
32
  - lib/why_chain/explainer.rb
33
+ - lib/why_chain/method_definition.rb
33
34
  - lib/why_chain/method_locator.rb
34
35
  - lib/why_chain/tracer.rb
35
36
  - lib/why_chain/version.rb