1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
class Hash
# Minor modification to Ruby's Hash#delete method
# allowing it to take multiple keys.
#
# hsh = { :a => 1, :b => 2 }
# hsh.delete_values(1)
# hsh #=> { :b => 2 }
#
# Returns a list of keys of the deleted entries.
#
# CREDIT: Daniel Schierbeck
def delete_values(*values)
deleted_keys = []
keys.each do |key|
if values.include?(fetch(key))
deleted_keys << key
delete(key)
end
end
deleted_keys
end
# Minor modification to Ruby's Hash#delete method
# allowing it to take multiple keys.
#
# hsh = {:a=>1, :b=>2, :c=>3}
#
# a, b, c = hsh.delete_values_at(:a, :b, :c)
#
# [a, b, c] #=> [1, 2, 3]
# hsh #=> {}
#
# CREDIT: Daniel Schierbeck
def delete_values_at(*keys, &yld)
keys.map{|key| delete(key, &yld) }
end
end
|