aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-01-09 10:14:25 -0800
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-01-09 10:14:25 -0800
commita67f25d50b5dd9585bb10ecd19bee6a34d69de6a (patch)
tree7905eb28c88cd6eb900c59beb23c12166bf868dd /activesupport/lib
parent4c32b729517a9a94e3d2a43f76df864fc5fc6e77 (diff)
parent51215937874dd5e8705701c772b41a7ce522f67c (diff)
downloadrails-a67f25d50b5dd9585bb10ecd19bee6a34d69de6a.tar.gz
rails-a67f25d50b5dd9585bb10ecd19bee6a34d69de6a.tar.bz2
rails-a67f25d50b5dd9585bb10ecd19bee6a34d69de6a.zip
Merge pull request #13632 from tinogomes/master
Adding Hash#compact and Hash#compact! methods
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/core_ext/hash.rb1
-rw-r--r--activesupport/lib/active_support/core_ext/hash/compact.rb20
2 files changed, 21 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/hash.rb b/activesupport/lib/active_support/core_ext/hash.rb
index 686f12c6da..f68e1662f9 100644
--- a/activesupport/lib/active_support/core_ext/hash.rb
+++ b/activesupport/lib/active_support/core_ext/hash.rb
@@ -1,3 +1,4 @@
+require 'active_support/core_ext/hash/compact'
require 'active_support/core_ext/hash/conversions'
require 'active_support/core_ext/hash/deep_merge'
require 'active_support/core_ext/hash/except'
diff --git a/activesupport/lib/active_support/core_ext/hash/compact.rb b/activesupport/lib/active_support/core_ext/hash/compact.rb
new file mode 100644
index 0000000000..6566215a4d
--- /dev/null
+++ b/activesupport/lib/active_support/core_ext/hash/compact.rb
@@ -0,0 +1,20 @@
+class Hash
+ # Returns a hash with non +nil+ values.
+ #
+ # hash = { a: true, b: false, c: nil}
+ # hash.compact # => { a: true, b: false}
+ # hash # => { a: true, b: false, c: nil}
+ # { c: nil }.compact # => {}
+ def compact
+ self.select { |_, value| !value.nil? }
+ end
+
+ # Replaces current hash with non +nil+ values.
+ #
+ # hash = { a: true, b: false, c: nil}
+ # hash.compact! # => { a: true, b: false}
+ # hash # => { a: true, b: false}
+ def compact!
+ self.reject! { |_, value| value.nil? }
+ end
+end