Module: Forwardable

Defined in:
lib/opal/forwardable.rb

Overview

          DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                  Version 2, December 2004

          DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. You just DO WHAT THE FUCK YOU WANT TO.

++

Instance Method Summary collapse

Instance Method Details

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



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/opal/forwardable.rb', line 30

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

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



22
23
24
25
26
27
28
# File 'lib/opal/forwardable.rb', line 22

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

    def_instance_delegator(accessor, method)
  }
end

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



12
13
14
15
16
17
18
19
20
# File 'lib/opal/forwardable.rb', line 12

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

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