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 +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/why_chain/method_definition.rb +14 -0
- data/lib/why_chain/method_locator.rb +1 -9
- data/lib/why_chain/tracer.rb +1 -7
- data/lib/why_chain/version.rb +1 -1
- data/lib/why_chain.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 57709eb19a0190d1c1cde75dc2cb9b4a657edfd5b4a57cda237a7665b9b027f4
|
|
4
|
+
data.tar.gz: 76a6b127db4b8acaa90f4e7047e2d64d4d12ff5e8553c3faf48d8b20a6b23141
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
@@ -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
|
-
|
|
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
|
data/lib/why_chain/tracer.rb
CHANGED
|
@@ -38,7 +38,7 @@ module WhyChain
|
|
|
38
38
|
|
|
39
39
|
def steps
|
|
40
40
|
lookup_chain.filter_map do |mod|
|
|
41
|
-
next unless
|
|
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
|
data/lib/why_chain/version.rb
CHANGED
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.
|
|
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
|