module Modulation::ExportFromReceiver

Functionality related to export from receiver

Constants

RE_RESERVED_METHOD

Public Class Methods

copy_constants(mod, receiver) click to toggle source

@return [Array] list of receiver constants

# File lib/modulation/export_from_receiver.rb, line 37
def copy_constants(mod, receiver)
  receiver.constants(false).each do |c|
    mod.singleton_class.const_set(c, receiver.const_get(c))
  end
end
create_forwarding_methods(mod, receiver) click to toggle source

@return [Array] list of receiver methods

# File lib/modulation/export_from_receiver.rb, line 16
def create_forwarding_methods(mod, receiver)
  receiver_methods(receiver).each do |m|
    mod.singleton_class.send(:define_method, m) do |*args, &block|
      receiver.send(m, *args, &block)
    end
  end
end
from_const(mod, name) click to toggle source
# File lib/modulation/export_from_receiver.rb, line 7
def from_const(mod, name)
  receiver = mod.singleton_class.const_get(name)

  methods = create_forwarding_methods(mod, receiver)
  consts = copy_constants(mod, receiver)
  methods + consts
end
receiver_methods(receiver) click to toggle source
# File lib/modulation/export_from_receiver.rb, line 26
def receiver_methods(receiver)
  ignored_klass = case receiver
                  when Class, Module then receiver.class
                  else Object
                  end

  methods = receiver.methods.reject { |m| m =~ RE_RESERVED_METHOD }
  methods - ignored_klass.instance_methods
end