File: delete_values.rb

package info (click to toggle)
ruby-facets 2.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 9,824 kB
  • sloc: ruby: 25,483; xml: 90; makefile: 20
file content (41 lines) | stat: -rw-r--r-- 851 bytes parent folder | download | duplicates (3)
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