mize 0.5.0 → 0.6.0
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 +4 -4
- data/VERSION +1 -1
- data/lib/mize/memoize.rb +5 -5
- data/lib/mize/railtie.rb +0 -1
- data/lib/mize/version.rb +1 -1
- data/mize.gemspec +5 -5
- data/spec/mize/memoize_method_spec.rb +49 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 517d9cb2997631d2645b96f8c54c2b9390370146aa1164f6c4acdf36ec99475a
|
4
|
+
data.tar.gz: e9a36341149d75c25156496b2a4a630ad561aaa620dd2428ecce38cb33786cea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a9c6cca1a2bbc599b153c8cdcb8b6fdfe80cadd591d269d7e6a70db666edec61651fc61f18e0e9b24d61a4cfc0489b096844eec3cf29c3ce3bee5d7c89c11cc
|
7
|
+
data.tar.gz: '058e70026c3535d00bcaecd775e17c04bfcb0cf70c836f88624080f79668ed79b0201b6b7e5bf5f76d33d5e3a2b20d8bee27e5dd6e252a6db76a75f15e3581a8'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/mize/memoize.rb
CHANGED
@@ -31,11 +31,11 @@ module Mize
|
|
31
31
|
class << self
|
32
32
|
private
|
33
33
|
|
34
|
-
def compute_result(method_id, orig_method, key, context, args, freeze)
|
34
|
+
def compute_result(method_id, orig_method, key, context, args, kargs, freeze)
|
35
35
|
result = orig_method.bind(context).call(*args)
|
36
36
|
if $DEBUG
|
37
37
|
warn "#{context.class} cached method "\
|
38
|
-
"#{method_id}(#{args.inspect unless args.
|
38
|
+
"#{method_id}(#{[ args, kargs ].inspect unless args.size + kargs.size == 0}) = "\
|
39
39
|
"#{result.inspect} [#{__id__}]"
|
40
40
|
end
|
41
41
|
freeze and result.freeze rescue nil
|
@@ -65,14 +65,14 @@ module Mize
|
|
65
65
|
method_id = method_id.to_s.to_sym
|
66
66
|
memoize_apply_visibility method_id do
|
67
67
|
orig_method = instance_method(method_id)
|
68
|
-
__send__(:define_method, method_id) do |*args|
|
68
|
+
__send__(:define_method, method_id) do |*args, **kargs|
|
69
69
|
function or mc = __mize_cache__
|
70
|
-
key = build_key(method_id, *args)
|
70
|
+
key = build_key(method_id, *args, **kargs)
|
71
71
|
if mc.exist?(key)
|
72
72
|
mc.read(key)
|
73
73
|
else
|
74
74
|
result = Mize::Memoize.send(
|
75
|
-
:compute_result, method_id, orig_method, key, self, args, freeze
|
75
|
+
:compute_result, method_id, orig_method, key, self, args, kargs, freeze
|
76
76
|
)
|
77
77
|
if store_nil || !result.nil?
|
78
78
|
mc.write(key, result)
|
data/lib/mize/railtie.rb
CHANGED
data/lib/mize/version.rb
CHANGED
data/mize.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: mize 0.
|
2
|
+
# stub: mize 0.6.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "mize".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.6.0".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2024-07-
|
11
|
+
s.date = "2024-07-25"
|
12
12
|
s.description = "Library that provides memoziation for methods and functions for Ruby.".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.extra_rdoc_files = ["README.md".freeze, "lib/mize.rb".freeze, "lib/mize/cache_methods.rb".freeze, "lib/mize/cache_protocol.rb".freeze, "lib/mize/configure.rb".freeze, "lib/mize/default_cache.rb".freeze, "lib/mize/global_clear.rb".freeze, "lib/mize/memoize.rb".freeze, "lib/mize/railtie.rb".freeze, "lib/mize/reload.rb".freeze, "lib/mize/version.rb".freeze]
|
@@ -17,13 +17,13 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.licenses = ["MIT".freeze]
|
18
18
|
s.rdoc_options = ["--title".freeze, "Mize - Library that provides memoziation for methods and functions".freeze, "--main".freeze, "README.md".freeze]
|
19
19
|
s.required_ruby_version = Gem::Requirement.new(">= 2".freeze)
|
20
|
-
s.rubygems_version = "3.5.
|
20
|
+
s.rubygems_version = "3.5.16".freeze
|
21
21
|
s.summary = "Library that provides memoziation for methods and functions".freeze
|
22
22
|
s.test_files = ["spec/mize/global_clear_spec.rb".freeze, "spec/mize/memoize_method_spec.rb".freeze, "spec/mize/memoize_reload_spec.rb".freeze, "spec/mize/version_spec.rb".freeze, "spec/spec_helper.rb".freeze]
|
23
23
|
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
|
-
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.16.
|
26
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.16.1".freeze])
|
27
27
|
s.add_development_dependency(%q<rake>.freeze, [">= 0".freeze])
|
28
28
|
s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
|
29
29
|
s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
|
@@ -27,6 +27,12 @@ class FooBar
|
|
27
27
|
end
|
28
28
|
memoize method: :foo
|
29
29
|
|
30
|
+
def foo2(arg: 22)
|
31
|
+
@@foo2 ||= arg
|
32
|
+
@@foo2 += 1
|
33
|
+
end
|
34
|
+
memoize method: :foo2
|
35
|
+
|
30
36
|
def footsie(*a)
|
31
37
|
@@footsie ||= 0
|
32
38
|
@@footsie += 1
|
@@ -40,6 +46,12 @@ class FooBar
|
|
40
46
|
end
|
41
47
|
memoize function: :bar
|
42
48
|
|
49
|
+
def bar2(arg: 22)
|
50
|
+
@@bar2 ||= arg
|
51
|
+
@@bar2 += 1
|
52
|
+
end
|
53
|
+
memoize function: :bar2
|
54
|
+
|
43
55
|
def foo_nil_stored(*a)
|
44
56
|
@@foo_nil_stored ||= 0
|
45
57
|
@@foo_nil_stored += 1
|
@@ -101,6 +113,29 @@ describe Mize do
|
|
101
113
|
expect(fb2.__send__(:__mize_cache__)).not_to be_empty
|
102
114
|
end
|
103
115
|
|
116
|
+
it 'can cache methods with kargs' do
|
117
|
+
expect(fb1.__send__(:__mize_cache__)).to be_empty
|
118
|
+
expect(fb2.__send__(:__mize_cache__)).to be_empty
|
119
|
+
expect(fb1.foo2()).to eq 23
|
120
|
+
expect(fb2.foo2()).to eq 24
|
121
|
+
expect(fb1.foo2(arg: 123)).to eq 25
|
122
|
+
expect(fb2.foo2(arg: 123)).to eq 26
|
123
|
+
expect(fb1.foo2()).to eq 23
|
124
|
+
expect(fb2.foo2()).to eq 24
|
125
|
+
fb1.mize_cache_clear
|
126
|
+
fb2.mize_cache_clear
|
127
|
+
expect(fb1.__send__(:__mize_cache__)).to be_empty
|
128
|
+
expect(fb2.__send__(:__mize_cache__)).to be_empty
|
129
|
+
expect(fb1.foo2()).to eq 27
|
130
|
+
expect(fb2.foo2()).to eq 28
|
131
|
+
expect(fb1.foo2()).to eq 27
|
132
|
+
expect(fb2.foo2()).to eq 28
|
133
|
+
expect(fb1.foo2(arg: 123)).to eq 29
|
134
|
+
expect(fb2.foo2(arg: 123)).to eq 30
|
135
|
+
expect(fb1.__send__(:__mize_cache__)).not_to be_empty
|
136
|
+
expect(fb2.__send__(:__mize_cache__)).not_to be_empty
|
137
|
+
end
|
138
|
+
|
104
139
|
it 'can cache protected methods' do
|
105
140
|
expect(fb1.__send__(:__mize_cache__)).to be_empty
|
106
141
|
expect(fb2.__send__(:__mize_cache__)).to be_empty
|
@@ -189,6 +224,20 @@ describe Mize do
|
|
189
224
|
expect(FooBar.__send__(:__mize_cache__)).not_to be_empty
|
190
225
|
end
|
191
226
|
|
227
|
+
it 'can cache functions with kargs' do
|
228
|
+
expect(FooBar.__send__(:__mize_cache__)).to be_empty
|
229
|
+
expect(fb1.bar2).to eq 23
|
230
|
+
expect(fb2.bar2).to eq 23
|
231
|
+
expect(fb1.bar2(arg: 123)).to eq 24
|
232
|
+
expect(fb2.bar2(arg: 123)).to eq 24
|
233
|
+
expect(fb1.bar2).to eq 23
|
234
|
+
expect(fb2.bar2).to eq 23
|
235
|
+
FooBar.mize_cache_clear
|
236
|
+
expect(fb1.bar2).to eq 25
|
237
|
+
expect(fb2.bar2).to eq 25
|
238
|
+
expect(FooBar.__send__(:__mize_cache__)).not_to be_empty
|
239
|
+
end
|
240
|
+
|
192
241
|
it 'can cache private functions' do
|
193
242
|
expect(FooBar.__send__(:__mize_cache__)).to be_empty
|
194
243
|
expect(fb1.__send__(:baz, 1, 2)).to eq 1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.16.
|
19
|
+
version: 1.16.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.16.
|
26
|
+
version: 1.16.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
162
|
- !ruby/object:Gem::Version
|
163
163
|
version: '0'
|
164
164
|
requirements: []
|
165
|
-
rubygems_version: 3.5.
|
165
|
+
rubygems_version: 3.5.16
|
166
166
|
signing_key:
|
167
167
|
specification_version: 4
|
168
168
|
summary: Library that provides memoziation for methods and functions
|