Class: Modifiers::Modification

Inherits:
Object
  • Object
show all
Defined in:
lib/modifiers/modification.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass:, method:) ⇒ Modification

Returns a new instance of Modification.



5
6
7
8
9
# File 'lib/modifiers/modification.rb', line 5

def initialize(klass:, method:)
  @klass = klass
  @original_method = klass.send(:instance_method, method)
  @original_visibility = visibility_on(klass)
end

Instance Attribute Details

#original_visibilityObject (readonly)

Returns the value of attribute original_visibility.



11
12
13
# File 'lib/modifiers/modification.rb', line 11

def original_visibility
  @original_visibility
end

Instance Method Details

#call(instance, *args, &block) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/modifiers/modification.rb', line 13

def call(instance, *args, &block)
  invocation = MethodInvocation.new(method: original_method, receiver: instance, arguments: args)
  if block
    instance.instance_exec(invocation, &block)
  else
    invocation.invoke
  end
end