Sha256: 9cd51ed03bdcdab2fa571852ff0ce8e3c42a2399f2ff7a5efcbac4ef547425ae

Contents?: true

Size: 673 Bytes

Versions: 12

Compression:

Stored size: 673 Bytes

Contents

unless Hash.instance_methods.include?(:underscore_keys)
  class Hash

    def underscore_keys
      new_hash = {}

      self.each_pair do |key, value|
        if value.respond_to?(:collect!) # Array
          value.collect do |item|
            if item.respond_to?(:each_pair) # Hash item within
              item.underscore_keys
            else
              item
            end
          end
        elsif value.respond_to?(:each_pair) # Hash
          value = value.underscore_keys
        end

        new_key = key.is_a?(String) ? key.underscore : key # only String keys

        new_hash[new_key] = value
      end

      self.replace(new_hash)
    end

  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
locomotivecms_wagon-1.1.0 lib/locomotive/wagon/misc/core_ext.rb
locomotivecms_wagon-1.0.2 lib/locomotive/wagon/misc/core_ext.rb
locomotivecms_wagon-1.0.1 lib/locomotive/wagon/misc/core_ext.rb
locomotivecms_wagon-1.0.0 lib/locomotive/wagon/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha8 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha7 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha6 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha5 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha4 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha3 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha2 lib/locomotive/builder/misc/core_ext.rb
locomotivecms_builder-1.0.0.alpha1 lib/locomotive/builder/misc/core_ext.rb