memoit 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7fedfe089098dabf4550e6372c2427bae7c074a8
4
- data.tar.gz: e232ef9aa3f0e4382e6a13d0955967c5c0406548
3
+ metadata.gz: 7d5440f6ce3b976230858dcb48b83657621987ec
4
+ data.tar.gz: 1fe48fce65be49c139a83c3a0fe8c636af0b23ed
5
5
  SHA512:
6
- metadata.gz: a3b2f1e7899f21c4411dd0e82b5e87dea805b8c7184cff93e8231e343253013b6d30d63dc217376965afdf3ddb5071351318e9cfc6ff26c66ce7df497e4f0ee2
7
- data.tar.gz: 8ef1f624dbbb4bfbc3b5797615706251c5d3486954e936c3f49dedbf53bd2bbf5eadd86dbbb43affff778af4186d182fde6ad2f59b5cafe1a857997bf67a71f6
6
+ metadata.gz: 537902c0edacd41f6026d270fdc8ea85c151006a5200d57588d19bd701a0d55b9b853def246caa9b9a82ad2257b20f44b7db3d0a52644fce8a7b8ec9c7626d03
7
+ data.tar.gz: 701854fb5eca663e2ce7aee4071c437ed4b339c4cbd18eb1a21a656423bd4e84075a54741454e16fdf360efd1773a48ec33436bb51abb117541db8020b83fc75
data/lib/memoit.rb CHANGED
@@ -16,7 +16,12 @@ module Memoit
16
16
  define_method(name) do |*args, &block|
17
17
  return super(*args, &block) if block
18
18
  cache = instance_variable_get(ivar_name) || instance_variable_set(ivar_name, {})
19
- cache[args.hash] ||= super(*args)
19
+ hash = args.hash
20
+ if cache.has_key?(hash)
21
+ cache[hash]
22
+ else
23
+ cache[hash] = super(*args)
24
+ end
20
25
  end
21
26
  end
22
27
  prepend mod
@@ -1,3 +1,3 @@
1
1
  module Memoit
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/spec/memoit_spec.rb CHANGED
@@ -10,6 +10,11 @@ describe Memoit do
10
10
  memoize def bar(*values)
11
11
  rand
12
12
  end
13
+
14
+ memoize def falsy
15
+ foo
16
+ false
17
+ end
13
18
  end
14
19
  end
15
20
  let(:instance) { klass.new }
@@ -31,5 +36,10 @@ describe Memoit do
31
36
  it "ignores cache when block given" do
32
37
  expect(instance.foo { }).not_to eq(instance.foo { })
33
38
  end
39
+
40
+ it "caches falsy values" do
41
+ expect(instance).to receive(:foo).once
42
+ expect(instance.falsy).to eq(instance.falsy)
43
+ end
34
44
  end
35
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memoit
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
  - Jonas Nicklas