Sha256: 6ee893a60c0db0b8e1dbd77f94389262364d8cbb9d23fb2af5bf72c8d5d07f9a
Contents?: true
Size: 1.36 KB
Versions: 6
Compression:
Stored size: 1.36 KB
Contents
class Hash # from: activesupport/lib/active_support/core_ext/hash/keys.rb # # hash = { name: 'Rob', age: '28' } # hash.transform_keys{ |key| key.to_s.upcase } # => { "NAME" => "Rob", "AGE" => "28" } def transform_keys result = {} each_key do |key| result[yield(key)] = self[key] end result end def transform_keys!(&block) keys.each do |key| value = delete(key) self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value end self end # hash = { 'name' => 'Rob', 'age' => '28' } # hash.symbolize_keys # => { name: "Rob", age: "28" } def symbolize_keys transform_keys { |key| key.to_sym rescue key } end # from: activesupport/lib/active_support/core_ext/hash/keys.rb, line 135 def symbolize_keys! transform_keys! { |key| key.to_sym rescue key } end # Merges the caller into +other_hash+. For example, # # options = options.reverse_merge(size: 25, velocity: 10) # # is equivalent to # # options = { size: 25, velocity: 10 }.merge(options) # # This is particularly useful for initializing an options hash # with default values. def reverse_merge(other_hash) other_hash.merge(self) end # Destructive +reverse_merge+. def reverse_merge!(other_hash) # right wins if there is no left merge!(other_hash) { |_key, left, _right| left } end end
Version data entries
6 entries across 6 versions & 1 rubygems