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