memist 2.0.1 → 2.0.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
  SHA256:
3
- metadata.gz: 84de3c6c331c88780477146d8b16c76a692590b8f737e5500654170bbf64011d
4
- data.tar.gz: 5628c558f0e0bbef06e3a8d6f26c206c746c99277f09f9ce22d9023adc5c0b07
3
+ metadata.gz: 8598567f17d0d1529feec01f833d363504f0f5d2a6779b02be1981358d5c9bda
4
+ data.tar.gz: 6133b314f773eacc680c23cd9892b7dbfd90c67d4022da4a730154f27a8d949d
5
5
  SHA512:
6
- metadata.gz: 3eb1ea75188ba3c703d9c92ad8b19adbaee32de8085b0dad3823506e22b2370f92757df3c2136cdc8bb06b96d3b317f7d7428c9209c0db5db17b8ec3f7b168d1
7
- data.tar.gz: ccf327df4e81b7bc905383446207f2c2fa09a6e7327081a4ba69b9c2868a7177fea8332fade6b42c138a59ad32236b9c3c4a5d423ab79307bb950d3a1928e02f
6
+ metadata.gz: b3fe4a42e21a828bbc0cf4296c724c417c35a604757b65f88652c295fe70623fe6fbebbdb35b4a8e03cdc5ffa81f137057f69b661487778e9fecd38f9c2423a9
7
+ data.tar.gz: 0ac546190aa46665630906ddfeafa08d3aca45d059097499d1049422c6498eea8a4af8dd38986873dff28367c344c5aaa91e3ad637e67a736c604b74dbddff46
@@ -1,2 +1,2 @@
1
- g�B�O�.Ԥ��Q4��O�������\�tV%�]KY�$]+�tOF���c����9bRO������x��!,ڴ�!�c�``�vP�V�G�I��V
2
- $ �w��OC}ö'G����l/&�O���
1
+ *ܰ�^E0!Y�Ϫ.C �⣣:D��U���b����x�&n�`�A��O�~�i���'�����Ra"��d'la"�$1.5���M���y��-���D
2
+ h
data.tar.gz.sig CHANGED
Binary file
@@ -13,12 +13,16 @@ module Memist
13
13
  end
14
14
 
15
15
  define_method "#{method}_with_memoization" do |arg = nil|
16
- @memoized_values ||= Hash.new { |hash, key| hash[key] = {} }
17
- if @memoized_values.key?(method) && @memoized_values[method].key?(arg)
18
- @memoized_values[method][arg]
16
+ if memoize?
17
+ @memoized_values ||= Hash.new { |hash, key| hash[key] = {} }
18
+ if @memoized_values.key?(method) && @memoized_values[method].key?(arg)
19
+ @memoized_values[method][arg]
20
+ else
21
+ value = send("#{method}_without_memoization", *arg)
22
+ @memoized_values[method][arg] = value
23
+ end
19
24
  else
20
- value = send("#{method}_without_memoization", *arg)
21
- @memoized_values[method][arg] = value
25
+ send("#{method}_without_memoization", *arg)
22
26
  end
23
27
  end
24
28
 
@@ -27,5 +27,18 @@ module Memist
27
27
  def memoized?(method)
28
28
  !!(@memoized_values && @memoized_values.include?(method.to_sym))
29
29
  end
30
+
31
+ def without_memoization
32
+ Thread.current[:without_memoization] ||= 0
33
+ Thread.current[:without_memoization] += 1
34
+ yield
35
+ ensure
36
+ Thread.current[:without_memoization] -= 1
37
+ end
38
+
39
+ def memoize?
40
+ Thread.current[:without_memoization].nil? ||
41
+ Thread.current[:without_memoization] <= 0
42
+ end
30
43
  end
31
44
  end
@@ -1,3 +1,3 @@
1
1
  module Memist
2
- VERSION = '2.0.1'.freeze
2
+ VERSION = '2.0.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memist
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
@@ -30,7 +30,7 @@ cert_chain:
30
30
  3wUJNGnT5XYq+qvTqmjkTSTfdGvZCM63C6bGdN5CAyMokGOOatGqyCMAONolWnfC
31
31
  gm3t2GWWrxY=
32
32
  -----END CERTIFICATE-----
33
- date: 2019-10-18 00:00:00.000000000 Z
33
+ date: 2019-12-02 00:00:00.000000000 Z
34
34
  dependencies: []
35
35
  description: A Ruby Memoization Helper
36
36
  email:
metadata.gz.sig CHANGED
Binary file