File: active_support/option_merger.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: ActiveSupport#1
  class: OptionMerger#2
inherits from
  Object ( Builtin-Module )
has properties
method: initialize / 2 #7
method: method_missing / 3 #12

Class Hierarchy

Code

   1  module ActiveSupport
   2    class OptionMerger #:nodoc:
   3      instance_methods.each do |method|
   4        undef_method(method) if method !~ /^(__|instance_eval|class|object_id)/
   5      end
   6 
   7      def initialize(context, options)
   8        @context, @options = context, options
   9      end
  10 
  11      private
  12        def method_missing(method, *arguments, &block)
  13          if arguments.last.is_a?(Proc)
  14            proc = arguments.pop
  15            arguments << lambda { |*args| @options.deep_merge(proc.call(*args)) }
  16          else
  17            arguments << (arguments.last.respond_to?(:to_hash) ? @options.deep_merge(arguments.pop) : @options.dup)
  18          end
  19 
  20          @context.__send__(method, *arguments, &block)
  21        end
  22    end
  23  end