Class: ClassSource::MethodIndex::ClassMethodIndex
- Inherits:
-
Object
- Object
- ClassSource::MethodIndex::ClassMethodIndex
- Defined in:
- lib/class_source/method_index.rb
Instance Method Summary collapse
- #ancestral_sources(method) ⇒ Object
- #extended ⇒ Object
-
#initialize(target_class) ⇒ ClassMethodIndex
constructor
A new instance of ClassMethodIndex.
- #overridden ⇒ Object
- #superclasses ⇒ Object
- #unique ⇒ Object
- #uniquely_named ⇒ Object
Constructor Details
#initialize(target_class) ⇒ ClassMethodIndex
Returns a new instance of ClassMethodIndex.
37 38 39 |
# File 'lib/class_source/method_index.rb', line 37 def initialize(target_class) @target_class = target_class end |
Instance Method Details
#ancestral_sources(method) ⇒ Object
61 62 63 |
# File 'lib/class_source/method_index.rb', line 61 def ancestral_sources(method) superclasses.map { |mod| mod.respond_to?(method) && mod.method(method).source_location }.compact end |
#extended ⇒ Object
45 46 47 48 49 |
# File 'lib/class_source/method_index.rb', line 45 def extended @target_class.singleton_class.ancestors.map do |mod| mod.instance_methods.select { |m| mod.instance_method(m).source_location == @target_class.method(m).source_location } end.flatten end |
#overridden ⇒ Object
55 56 57 58 59 |
# File 'lib/class_source/method_index.rb', line 55 def overridden (@target_class.methods - uniquely_named).select do |m| !ancestral_sources(m).include?(@target_class.method(m).source_location) end end |
#superclasses ⇒ Object
65 66 67 |
# File 'lib/class_source/method_index.rb', line 65 def superclasses @target_class.ancestors - [@target_class] end |
#unique ⇒ Object
41 42 43 |
# File 'lib/class_source/method_index.rb', line 41 def unique uniquely_named + overridden - extended end |
#uniquely_named ⇒ Object
51 52 53 |
# File 'lib/class_source/method_index.rb', line 51 def uniquely_named @target_class.singleton_methods(false) end |