From: "dsisnero (Dominic Sisneros)" Date: 2013-02-07T05:02:05+09:00 Subject: [ruby-core:51945] [ruby-trunk - Feature #7793] New methods on Hash Issue #7793 has been updated by dsisnero (Dominic Sisneros). This should be re-opened. It is not for all enumerables but only for hash. map_v and map_k are very useful map_kv is similar to h.mash and others and could be eliminated by those other bugs but the other functions aren't and are specifically for hashes and thus this should be re-opened ---------------------------------------- Feature #7793: New methods on Hash https://bugs.ruby-lang.org/issues/7793#change-35944 Author: dsisnero (Dominic Sisneros) Status: Closed Priority: Normal Assignee: Category: Target version: It would be nice to have the following methods added to hash h = { name: 'dominic', request: 'add the following methods', :why => 'convenience'} h.map_v{|v| v.upcase} {:name=>"DOMINIC", :request=>"ADD THE FOLLOWING METHODS", :why=>"CONVENIENCE"} h.map_k{|k| k.to_s} { "name"=> 'dominic', "request"=>"add the following methods', "why" => "convenience"} h.map_kv{|k,v| [k.to_s, v.upcase]} { "name"=>"DOMINIC", "request"=>"ADD THE FOLLOWING METHODS", "why"=>"CONVENIENCE"} class Hash def map_v reduce({}) do |result, array| k,v = array new_val = yield v result.merge( k => new_val) end end def map_k reduce({}) do |result, array| k,v = array new_k = yield k result.merge(new_k => v) end end def map_kv reduce({}) do |result, array| new_k,new_v = yield array result.merge(new_k => new_v) end end end -- http://bugs.ruby-lang.org/