Module: Findr::StrategyProxy::ClassMethods

Defined in:
lib/findr/strategy_proxy.rb

Instance Method Summary collapse

Instance Method Details

#provides(method_name, *argument_names) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/findr/strategy_proxy.rb', line 26

def provides(method_name, *argument_names)
  arglist = argument_names.map(&:to_sym).join(',')
  method_string = <<-END_METHOD
    def #{method_name}(#{arglist})
      @strategy.#{method_name}(#{arglist})
    rescue NoMethodError
      does_not_implement_method(@strategy, '#{method_name}')
    end
  END_METHOD
  class_eval method_string
end

#singleton_provides(method_name, *argument_names) ⇒ Object

before using singleton_provides you must define @@strategy BEFORE FIRST USE of the defined singleton methods



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/findr/strategy_proxy.rb', line 39

def singleton_provides(method_name, *argument_names)
  arglist = argument_names.map(&:to_sym).join(',')
  method_string = <<-END_METHOD
    def self.#{method_name}(#{arglist})
      @@strategy.#{method_name}(#{arglist})
    rescue NoMethodError
      does_not_implement_method(@@strategy, 'self.#{method_name}')
    end
  END_METHOD
  class_eval method_string
end