summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-hash-ext/mrblib
diff options
context:
space:
mode:
authorJun Hiroe <[email protected]>2014-05-04 00:35:18 +0900
committerJun Hiroe <[email protected]>2014-05-04 00:46:36 +0900
commit3e7db4ad271f5e2eebdb92114266d15d21d5cc34 (patch)
treef8d0be72db26f774df3afe66b749e4c31b4a22b2 /mrbgems/mruby-hash-ext/mrblib
parent8e4d3bb94e869679486ebeaefcc586b4e3ed5cb7 (diff)
downloadmruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.tar.gz
mruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.zip
Add Hash#delete_if
Diffstat (limited to 'mrbgems/mruby-hash-ext/mrblib')
-rw-r--r--mrbgems/mruby-hash-ext/mrblib/hash.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/mrbgems/mruby-hash-ext/mrblib/hash.rb b/mrbgems/mruby-hash-ext/mrblib/hash.rb
index bf3836514..2b089232f 100644
--- a/mrbgems/mruby-hash-ext/mrblib/hash.rb
+++ b/mrbgems/mruby-hash-ext/mrblib/hash.rb
@@ -27,4 +27,27 @@ class Hash
self[key]
end
end
+
+ ##
+ # call-seq:
+ # hsh.delete_if {| key, value | block } -> hsh
+ # hsh.delete_if -> an_enumerator
+ #
+ # Deletes every key-value pair from <i>hsh</i> for which <i>block</i>
+ # evaluates to <code>true</code>.
+ #
+ # If no block is given, an enumerator is returned instead.
+ #
+ # h = { "a" => 100, "b" => 200, "c" => 300 }
+ # h.delete_if {|key, value| key >= "b" } #=> {"a"=>100}
+ #
+
+ def delete_if(&block)
+ return to_enum :delete_if unless block_given?
+
+ self.each do |k, v|
+ self.delete(k) if block.call(k, v)
+ end
+ self
+ end
end