Class: Hash

Inherits:
Object show all
Defined in:
lib/core_ext/hash.rb

Instance Method Summary collapse

Instance Method Details

#assert_valid_keys(*valid_keys) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/core_ext/hash.rb', line 34

def assert_valid_keys(*valid_keys)
  valid_keys.flatten!

  each_key do |k|
    raise ArgumentError.new("Unknown key: #{k}") unless valid_keys.include?(k)
  end
end

#deep_symbolize_keysObject



50
51
52
# File 'lib/core_ext/hash.rb', line 50

def deep_symbolize_keys
  deep_transform_keys { |key| key.to_sym rescue key }
end

#deep_symbolize_keys!Object



54
55
56
# File 'lib/core_ext/hash.rb', line 54

def deep_symbolize_keys!
  deep_transform_keys! { |key| key.to_sym rescue key }
end

#deep_transform_keys(&block) ⇒ Object



42
43
44
# File 'lib/core_ext/hash.rb', line 42

def deep_transform_keys(&block)
  deep_transform_keys_in_object(self, &block)
end

#deep_transform_keys!(&block) ⇒ Object



46
47
48
# File 'lib/core_ext/hash.rb', line 46

def deep_transform_keys!(&block)
  deep_transform_keys_in_object!(self, &block)
end

#reverse_merge(other_hash) ⇒ Object



2
3
4
# File 'lib/core_ext/hash.rb', line 2

def reverse_merge(other_hash)
  other_hash.merge(self)
end

#reverse_merge!(other_hash) ⇒ Object



6
7
8
# File 'lib/core_ext/hash.rb', line 6

def reverse_merge!(other_hash)
  merge!(other_hash) { |key, left, right| left }
end

#symbolize_keysObject



26
27
28
# File 'lib/core_ext/hash.rb', line 26

def symbolize_keys
  transform_keys { |key| key.to_sym rescue key }
end

#symbolize_keys!Object



30
31
32
# File 'lib/core_ext/hash.rb', line 30

def symbolize_keys!
  transform_keys! { |key| key.to_sym rescue key }
end

#transform_keysObject



10
11
12
13
14
15
16
# File 'lib/core_ext/hash.rb', line 10

def transform_keys
  {}.tap do |result|
    each_key do |key|
      result[yield(key)] = self[key]
    end
  end
end

#transform_keys!Object



18
19
20
21
22
23
24
# File 'lib/core_ext/hash.rb', line 18

def transform_keys!
  keys.each do |key|
    self[yield(key)] = delete(key)
  end

  self
end