module Findr::StrategyProxy::ClassMethods

Public Instance Methods

provides(method_name, *argument_names) click to toggle source
# 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) click to toggle source

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

# 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