Sha256: dde77ce0b80d216ba42e98a3ac91aaab7810a98eb641f9d3fe179381cc4685e6

Contents?: true

Size: 1.28 KB

Versions: 16

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require "active_support/core_ext/hash/deep_merge"

module ActiveSupport
  class OptionMerger #:nodoc:
    instance_methods.each do |method|
      undef_method(method) if !/^(__|instance_eval|class|object_id)/.match?(method)
    end

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

    private
      def method_missing(method, *arguments, &block)
        options = nil
        if arguments.first.is_a?(Proc)
          proc = arguments.pop
          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

        invoke_method(method, arguments, options, &block)
      end

      if RUBY_VERSION >= "2.7"
        def invoke_method(method, arguments, options, &block)
          if options
            @context.__send__(method, *arguments, **options, &block)
          else
            @context.__send__(method, *arguments, &block)
          end
        end
      else
        def invoke_method(method, arguments, options, &block)
          arguments << options.dup if options
          @context.__send__(method, *arguments, &block)
        end
      end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
mumukit-content-type-1.12.1 vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/option_merger.rb
mumukit-content-type-1.12.0 vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/option_merger.rb
activesupport-6.0.6.1 lib/active_support/option_merger.rb
activesupport-6.0.6 lib/active_support/option_merger.rb
activesupport-6.0.5.1 lib/active_support/option_merger.rb
activesupport-6.0.5 lib/active_support/option_merger.rb
activesupport-6.0.4.8 lib/active_support/option_merger.rb
activesupport-6.0.4.7 lib/active_support/option_merger.rb
activesupport-6.0.4.6 lib/active_support/option_merger.rb
activesupport-6.0.4.5 lib/active_support/option_merger.rb
activesupport-6.0.4.4 lib/active_support/option_merger.rb
activesupport-6.0.4.3 lib/active_support/option_merger.rb
activesupport-6.0.4.2 lib/active_support/option_merger.rb
activesupport-6.0.4.1 lib/active_support/option_merger.rb
mumukit-content-type-1.11.1 vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/option_merger.rb
activesupport-6.0.4 lib/active_support/option_merger.rb