class Dry::Monads::Do::All::MethodTracker

@private

Attributes

wrappers[R]

Public Class Methods

new(wrappers) click to toggle source
Calls superclass method
# File lib/dry/monads/do/all.rb, line 62
def initialize(wrappers)
  super()

  @wrappers = wrappers
  tracker = self

  module_eval do
    private

    define_method(:method_added) do |method|
      super(method)
      tracker.wrap_method(self, method)
    end

    define_method(:inherited) do |base|
      super(base)

      base.prepend(wrappers[base])
    end

    def included(base)
      super
      All.included(base)
    end
  end
end

Public Instance Methods

extend_object(target) click to toggle source
Calls superclass method
# File lib/dry/monads/do/all.rb, line 89
def extend_object(target)
  super
  target.prepend(wrappers[target])
end
included(base) click to toggle source
Calls superclass method
# File lib/dry/monads/do/all.rb, line 82
def included(base)
  super
  All.included(base)
end
wrap_method(target, method) click to toggle source
# File lib/dry/monads/do/all.rb, line 94
def wrap_method(target, method)
  visibility = Do.method_visibility(target, method)
  Do.wrap_method(wrappers[target], method, visibility)
end