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
|