24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/context/base_context.rb', line 24
def decorate(ancestor_context_method, decorator:, args: [], memoize: false)
define_method(ancestor_context_method) do
decorator.new(
@parent_context.public_send(ancestor_context_method),
*(args.map { |arg| instance_eval(arg.to_s) })
)
end
@decorated_methods ||= []
@decorated_methods << ancestor_context_method.to_sym
if memoize
public_send(:memoize, ancestor_context_method)
@decorated_methods << "_unmemoized_#{ancestor_context_method}".to_sym
end
end
|