aboutsummaryrefslogtreecommitdiffstats
path: root/spec/doubles/hash.rb
blob: 32c5b980582650b783d6e2ff9eaa264bd1632788 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Hash
  def ordered_array
    to_a.sort { |(key1, value1), (key2, value2)| key1.hash <=> key2.hash }
  end

  def keys
    ordered_array.collect(&:first)
  end

  def values
    ordered_array.collect { |_, v| v }
  end

  def each(&block)
    ordered_array.each(&block)
  end

  def shift
    returning to_a.first do |k, v|
      delete(k)
    end
  end
end