class ActiveSupport::OptionMerger

:nodoc:

def initialize(context, options)

def initialize(context, options)
  @context, @options = context, options
end

def method_missing(method, *arguments, &block)

def method_missing(method, *arguments, &block)
  options = nil
  if arguments.size == 1 && arguments.first.is_a?(Proc)
    proc = arguments.shift
    arguments << lambda { |*args| @options.deep_merge(proc.call(*args)) }
  elsif arguments.last.respond_to?(:to_hash)
    options = @options.deep_merge(arguments.pop)
  else
    options = @options
  end
  if options
    @context.__send__(method, *arguments, **options, &block)
  else
    @context.__send__(method, *arguments, &block)
  end
end

def respond_to_missing?(*arguments)

def respond_to_missing?(*arguments)
  @context.respond_to?(*arguments)
end