Sha256: 88dd8d3ae14ad0c97aa8dddc61db3f39699e4c554eb0326f0df04e58bbde41fd

Contents?: true

Size: 889 Bytes

Versions: 2

Compression:

Stored size: 889 Bytes

Contents

require 'active_support'
require 'active_support/core_ext/object/blank'

module MoreCoreExtensions
  module HashDeletes
    # Deletes all keys where the value is nil
    #
    #   {:a => 1, :b => [], :c => nil}.delete_nils # => {:a => 1, :b => []}
    def delete_nils
      delete_if { |k, v| v.nil? }
    end

    # Deletes all keys where the value is blank
    #
    #   {:a => 1, :b => [], :c => nil}.delete_blanks # => {:a => 1}
    def delete_blanks
      delete_if { |k, v| v.blank? }
    end

    # Deletes all keys and subkeys that match +key+.
    #
    #   {:a => {:b => 2, :c => 3}}.deep_delete(:b) # => {:a => {:c => 3}}
    #
    def deep_delete(key)
      key = [key] unless key.kind_of?(Array)
      key.each { |k| delete(k) }
      each_value { |v| v.deep_delete(key) if v.respond_to?(:deep_delete) }
    end
  end
end

Hash.send(:include, MoreCoreExtensions::HashDeletes)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
more_core_extensions-4.5.0 lib/more_core_extensions/core_ext/hash/deletes.rb
more_core_extensions-4.4.0 lib/more_core_extensions/core_ext/hash/deletes.rb