Sha256: 63f3d93378ec546e62ebc89e68dbf6368f539aba969417f3470a0079c459de6a
Contents?: true
Size: 1.05 KB
Versions: 49
Compression:
Stored size: 1.05 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) unless method.start_with?("__", "instance_eval", "class", "object_id") end def initialize(context, options) @context, @options = context, options end private 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) @context.respond_to?(*arguments) end end end
Version data entries
49 entries across 47 versions & 10 rubygems