multi_hash_iterator 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88ea9612ce4415bb7a612f00af4edcec6edf2a6c
4
- data.tar.gz: 688f2342d86cad7c69f1f3ae2aeab36f4ae4cf75
3
+ metadata.gz: c32d73415e08880797327bbd129fd53dcef6e252
4
+ data.tar.gz: 2ee116a6205b0f3e9932389d006d9b2d6c54a2df
5
5
  SHA512:
6
- metadata.gz: b15ea5786196b6a2f58643440442fc80a91fb679aab9092d841c013b50e5aa151ba70b86ca29921b384a6035a43e47f686315e5ed79532acab7022f3795a2d28
7
- data.tar.gz: ae72986870f7e74381a8b827bce6695afc142d936895f4ed2654ac019f5a065a9de03f0d6c47c63248b7e3e2c8e79b545d21aaa0a08e2cbcebaab1b2bf5da511
6
+ metadata.gz: fc5597a65a39ddf1e9849c3c31a17f34849c55d41676e9f4f583357cfd5ca8d36b41b110f287e444183295c8e415d0c8379a2d437209838a47ca164baf937417
7
+ data.tar.gz: 6acd3756c7249d81d9d574db38660d1dbd3bd04669ec57b2bc37e2097a10d0b02da29d3164c2e9032dde533211505930f383dfca8ab00931b53bd845dd43b280
@@ -6,6 +6,7 @@ class MultiHash
6
6
 
7
7
  def initialize *hashes
8
8
  @hashes = hashes
9
+ @memo = {}
9
10
  end
10
11
 
11
12
  # Enumerate for each key.
@@ -14,11 +15,15 @@ class MultiHash
14
15
  def each
15
16
  return enum_for(:each) unless block_given?
16
17
 
17
- final_hash = {}
18
+ # iterate through the memo first
19
+ @memo.each do |k, v|
20
+ yield k, v
21
+ end
22
+
18
23
  count = @hashes.length
19
24
  count.times do |i|
20
25
  @hashes[i].each do |key, v|
21
- next if final_hash[key]
26
+ next if @memo[key]
22
27
 
23
28
  values = [].fill(nil, 0, i)
24
29
  values << v
@@ -27,7 +32,7 @@ class MultiHash
27
32
  end
28
33
 
29
34
  yield key, values if block_given?
30
- final_hash[key] = values
35
+ @memo[key] = values
31
36
  end
32
37
  end
33
38
  end
@@ -2,7 +2,7 @@ require './lib/multi_hash_iterator'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "multi_hash_iterator"
5
- s.version = "0.1.1"
5
+ s.version = "0.1.2"
6
6
  s.authors = ["Albert Tedja"]
7
7
  s.email = "nicho_tedja@yahoo.com"
8
8
  s.homepage = "https://github.com/atedja/multi_hash_iterator"
@@ -28,7 +28,7 @@ class TestMultiHashIterator < Minitest::Test
28
28
  end
29
29
 
30
30
 
31
- def test_basic
31
+ def test_basic_multiple_iteration
32
32
  h1 = { a: 1, b: 2, c: 3 }
33
33
  h2 = { a: 2, b: 3 }
34
34
  h3 = { b: 4, d: 6 }
@@ -81,6 +81,10 @@ class TestMultiHashIterator < Minitest::Test
81
81
  assert_equal Enumerator, e.class
82
82
  assert_equal [:a, [1, 2, nil]], e.next
83
83
  assert_equal [:b, [2, 3, 4]], e.next
84
+
85
+ e = mh.each
86
+ assert_equal [:a, [1, 2, nil]], e.next
87
+ assert_equal [:b, [2, 3, 4]], e.next
84
88
  end
85
89
 
86
90
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_hash_iterator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Albert Tedja