Sha256: 2a8a83adf2bb3e4df091b5b3d132889d400c5d08b42db8805a70c0a9490c1347
Contents?: true
Size: 943 Bytes
Versions: 2
Compression:
Stored size: 943 Bytes
Contents
require "active_support/core_ext/hash/keys" module PageEz class Options def self.merge(options, dynamic_options = nil, *args) dynamic_options ||= -> { {} } keys_to_extract = dynamic_options.parameters.filter_map do |type, name| if type == :keyreq || type == :key name end end if args.last.is_a?(Hash) if dynamic_options.arity == 0 options.merge(*args) else kwargs = args.pop if keys_to_extract.empty? options.merge(dynamic_options.call(*args, **kwargs)) else sliced = kwargs.slice(*keys_to_extract) except = kwargs.except(*keys_to_extract) options.merge( dynamic_options.call(*args, **sliced) ).merge( except ) end end else options.merge(dynamic_options.call(*args)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
page_ez-0.2.0 | lib/page_ez/options.rb |
page_ez-0.1.0 | lib/page_ez/options.rb |