Module: SingleForwardable

Defined in:
lib/opal/forwardable.rb

Instance Method Summary collapse

Instance Method Details

#def_single_delegator(accessor, method, ali = method) ⇒ Object Also known as: def_delegator



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/opal/forwardable.rb', line 66

def def_single_delegator(accessor, method, ali = method)
  if accessor.to_s.start_with?('@')
    define_singleton_method ali do |*args, &block|
      instance_variable_get(accessor).__send__(method, *args, &block)
    end
  else
    define_singleton_method ali do |*args, &block|
      __send__(accessor).__send__(method, *args, &block)
    end
  end
end

#def_single_delegators(accessor, *methods) ⇒ Object Also known as: def_delegators



58
59
60
61
62
63
64
# File 'lib/opal/forwardable.rb', line 58

def def_single_delegators(accessor, *methods)
  methods.each {|method|
    next if [:__send__, :__id__].member?(method)

    def_single_delegator(accessor, method)
  }
end

#single_delegate(hash) ⇒ Object Also known as: delegate



48
49
50
51
52
53
54
55
56
# File 'lib/opal/forwardable.rb', line 48

def single_delegate(hash)
  hash.each {|methods, accessor|
    methods = [methods] unless methods.respond_to?(:each)

    methods.each {|method|
      def_single_delegator(accessor, method)
    }
  }
end