Module: ParamsReady::Extensions::Hash

Defined in:
lib/params_ready/extensions/hash.rb

Class Method Summary collapse

Class Method Details

.acts_as_hash?(object) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
# File 'lib/params_ready/extensions/hash.rb', line 21

def self.acts_as_hash?(object)
  return false unless object.respond_to? :[]
  return false unless object.respond_to? :key?
  return false unless object.respond_to? :fetch

  true
end

.indifferent_access(hash, key, default) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/params_ready/extensions/hash.rb', line 29

def self.indifferent_access(hash, key, default)
  hash.fetch(key) do
    case key
    when String
      hash.fetch(key.to_sym, default)
    when Symbol
      hash.fetch(key.to_s, default)
    else
      string_key = key.to_s
      hash.fetch(string_key) do
        hash.fetch(string_key.to_sym, default)
      end
    end
  end
end

.try_deep_freeze(object) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/params_ready/extensions/hash.rb', line 11

def self.try_deep_freeze(object)
  if object.is_a? ::Hash
    object.values.each do |value|
      try_deep_freeze(value)
    end
  end
  object.freeze
  object
end