Sha256: 05c84459754a3f05b0cd0485bb3ba9f740c286245560027c22143b6ca9d15da3

Contents?: true

Size: 1.26 KB

Versions: 11

Compression:

Stored size: 1.26 KB

Contents

class Hash
  unless ({}.transform_keys(:x => 1) rescue false)
    require 'backports/2.5.0/hash/transform_keys'
    require 'backports/tools/alias_method_chain'

    def transform_keys_with_hash_arg(hash = not_given = true, &block)
      return to_enum(:transform_keys) { size } if not_given && !block

      return transform_keys_without_hash_arg(&block) if not_given

      h = {}
      if block_given?
        each do |key, value|
          h[hash.fetch(key) { yield key }] = value
        end
      else
        each do |key, value|
          h[hash.fetch(key, key)] = value
        end
      end
      h
    end
    Backports.alias_method_chain self, :transform_keys, :hash_arg

    def transform_keys_with_hash_arg!(hash = not_given = true, &block)
      return enum_for(:transform_keys!) { size } if not_given && !block

      return transform_keys_without_hash_arg!(&block) if not_given

      h = {}
      begin
        if block_given?
          each do |key, value|
            h[hash.fetch(key) { yield key }] = value
          end
        else
          each do |key, value|
            h[hash.fetch(key, key)] = value
          end
        end
      ensure
        replace(h)
      end
      self
    end
    Backports.alias_method_chain self, :transform_keys!, :hash_arg
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
backports-3.25.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.24.1 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.24.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.23.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.22.1 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.22.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.21.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.20.2 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.20.1 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.20.0 lib/backports/3.0.0/hash/transform_keys.rb
backports-3.19.0 lib/backports/3.0.0/hash/transform_keys.rb