Module: DelegateWhenNil

Defined in:
lib/delegate_when_nil.rb,
lib/delegate_when_nil/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#define_conditional_delegation(name, target) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/delegate_when_nil.rb', line 4

def define_conditional_delegation name, target
  old_name = "delegate_when_nil_#{name}".to_sym
  return if method_defined? old_name

  class_eval "    alias \#{old_name} \#{name}                         # alias delegate_when_nil_description description\n    def \#{name} *args                                 # def description *args\n      result = \#{old_name}(*args)                     #   result = delegate_when_nil_description(*args)\n      if result == nil                                #   if result == nil\n         delegate = \#{target}                         #     delegate = parent\n         result = delegate.\#{name}(*args) if delegate #     result = delegate.description(*args) if delegate\n      end                                             #   end\n      result                                          #   result\n    end                                               # end\n"
end

#delegate_when_nil(*names) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/delegate_when_nil.rb', line 21

def delegate_when_nil *names
  target = names.pop[:to]
  raise "missing :to option to #delegate_when_nil for #{name}" if target.to_s == ""
  names.each do |name|
    define_conditional_delegation name, target
  end
end