Sha256: b798d06707bea9b1777f5a4dc2e698b5128c6ac379de0e1c46ca081049eebef1
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true module Rack class Reducer # Refine a few core classes in Rack::Reducer's scope only module Refinements refine Proc do def required_argument_names parameters.select { |type, _| type == :keyreq }.map(&:last) end def all_argument_names parameters.map(&:last) end def satisfies?(params) keywords = required_argument_names params.slice(*keywords).keys.to_set == keywords.to_set end end # backport Hash#slice for Ruby < 2.4 unless {}.respond_to?(:slice) refine Hash do def slice(*keys) [keys, values_at(*keys)].transpose.select { |_k, val| val }.to_h end end end refine Hash do def symbolize_keys each_with_object({}) do |(key, val), hash| hash[key.to_sym] = val.is_a?(Hash) ? val.symbolize_keys : val end end alias_method :to_unsafe_h, :to_h end refine NilClass do def empty? true end end end private_constant :Refinements end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rack-reducer-2.0.2 | lib/rack/reducer/refinements.rb |
rack-reducer-2.0.0 | lib/rack/reducer/refinements.rb |