diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-05-05 21:17:14 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-05-05 21:17:14 +0900 |
| commit | 02cabf8fa7aacb1063d73105dbcf59bccee87470 (patch) | |
| tree | 2648b732a7ad5120318a483d398024a482ac8304 /mrbgems/mruby-hash-ext/mrblib/hash.rb | |
| parent | e620c666d9746713e341970fc6803277cc846e84 (diff) | |
| parent | dcad562f7364e68724c024e2969ee1f1957f7263 (diff) | |
| download | mruby-02cabf8fa7aacb1063d73105dbcf59bccee87470.tar.gz mruby-02cabf8fa7aacb1063d73105dbcf59bccee87470.zip | |
Merge pull request #2198 from suzukaze/add-hash.keep_if
Add Hash#keep_if
Diffstat (limited to 'mrbgems/mruby-hash-ext/mrblib/hash.rb')
| -rw-r--r-- | mrbgems/mruby-hash-ext/mrblib/hash.rb | 23 |
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 48bade330..a5f04e5e1 100644 --- a/mrbgems/mruby-hash-ext/mrblib/hash.rb +++ b/mrbgems/mruby-hash-ext/mrblib/hash.rb @@ -137,4 +137,27 @@ class Hash self.each {|k, v| h[v] = k } h end + + ## + # call-seq: + # hsh.keep_if {| key, value | block } -> hsh + # hsh.keep_if -> an_enumerator + # + # Deletes every key-value pair from <i>hsh</i> for which <i>block</i> + # evaluates to false. + # + # If no block is given, an enumerator is returned instead. + # + + def keep_if(&block) + return to_enum :keep_if unless block_given? + + keys = [] + self.each do |k, v| + unless block.call([k, v]) + self.delete(k) + end + end + self + end end |
