Module: SingleForwardable
- Defined in:
- lib/opal/forwardable.rb
Instance Method Summary collapse
- #def_single_delegator(accessor, method, ali = method) ⇒ Object (also: #def_delegator)
- #def_single_delegators(accessor, *methods) ⇒ Object (also: #def_delegators)
- #single_delegate(hash) ⇒ Object (also: #delegate)
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 |