lite-memoize 1.0.2 → 1.1.1
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/.rubocop.yml +21 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile.lock +45 -35
- data/lib/lite/memoize.rb +6 -3
- data/lib/lite/memoize/alias.rb +1 -2
- data/lib/lite/memoize/instance.rb +2 -2
- data/lib/lite/memoize/klass.rb +1 -3
- data/lib/lite/memoize/version.rb +1 -1
- data/lite-memoize.gemspec +2 -1
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d31dc6c0952b7d08df26d9db0bfc2de04397f1c875649e30dd1ec991974d41
|
4
|
+
data.tar.gz: 42f03b953d56020bb3f6e115a25af3bb62619354814ecbbc5f75d9859df9f71c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef29fa0f0017a4300b1694d3dc022e0e85760b909954dfa6a20d11c9a435552c406ae81eeb161ce663d42c8e30dd6005c31f9885e43d13867776c218240d7ecd
|
7
|
+
data.tar.gz: da305aa07fdb795a5a105d92cbab19706e737a8b172553567c60251daa18014dffcb92e9f776bd628f4d67819a686ab36b3d62f52d78c2b87e2bc34cda99ad04
|
data/.rubocop.yml
CHANGED
@@ -2,11 +2,14 @@ require:
|
|
2
2
|
- rubocop-performance
|
3
3
|
- rubocop-rspec
|
4
4
|
AllCops:
|
5
|
-
TargetRubyVersion:
|
5
|
+
TargetRubyVersion: 3.0
|
6
|
+
NewCops: enable
|
6
7
|
DisplayCopNames: true
|
7
8
|
DisplayStyleGuide: true
|
8
|
-
|
9
|
-
|
9
|
+
Gemspec/RequiredRubyVersion:
|
10
|
+
Enabled: false
|
11
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
12
|
+
Enabled: true
|
10
13
|
Layout/EmptyLinesAroundBlockBody:
|
11
14
|
Exclude:
|
12
15
|
- 'spec/**/**/*'
|
@@ -14,6 +17,14 @@ Layout/EmptyLinesAroundClassBody:
|
|
14
17
|
EnforcedStyle: empty_lines_except_namespace
|
15
18
|
Layout/EmptyLinesAroundModuleBody:
|
16
19
|
EnforcedStyle: empty_lines_except_namespace
|
20
|
+
Layout/LineLength:
|
21
|
+
Max: 100
|
22
|
+
Layout/SpaceAroundMethodCallOperator:
|
23
|
+
Enabled: true
|
24
|
+
Lint/RaiseException:
|
25
|
+
Enabled: true
|
26
|
+
Lint/StructNewOverride:
|
27
|
+
Enabled: true
|
17
28
|
Metrics/BlockLength:
|
18
29
|
Exclude:
|
19
30
|
- 'spec/**/**/*'
|
@@ -24,9 +35,15 @@ Naming/FileName:
|
|
24
35
|
Enabled: false
|
25
36
|
Naming/MemoizedInstanceVariableName:
|
26
37
|
Enabled: false
|
27
|
-
Naming/
|
38
|
+
Naming/MethodParameterName:
|
39
|
+
Enabled: false
|
40
|
+
Style/AccessModifierDeclarations:
|
41
|
+
Enabled: false
|
42
|
+
Style/ArgumentsForwarding:
|
28
43
|
Enabled: false
|
29
44
|
Style/Documentation:
|
30
45
|
Enabled: false
|
46
|
+
Style/DocumentDynamicEvalDefinition:
|
47
|
+
Enabled: false
|
31
48
|
Style/ExpandPathArguments:
|
32
49
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.1.1] - 2021-07-22
|
10
|
+
### Changed
|
11
|
+
- Improved setup
|
12
|
+
|
13
|
+
## [1.1.0] - 2021-07-19
|
14
|
+
### Added
|
15
|
+
- Added Ruby 3.0 support
|
16
|
+
|
17
|
+
## [1.0.4] - 2021-05-07
|
18
|
+
### Changed
|
19
|
+
- Performance bind call
|
20
|
+
|
21
|
+
## [1.0.3] - 2019-08-13
|
22
|
+
### Added
|
23
|
+
- Added ruby 2.7 support
|
24
|
+
- Added clear alias from clear_cache on Alias
|
25
|
+
|
9
26
|
## [1.0.2] - 2019-08-07
|
10
27
|
### Added
|
11
28
|
- Added variable base memoization
|
data/Gemfile.lock
CHANGED
@@ -1,52 +1,61 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lite-memoize (1.
|
4
|
+
lite-memoize (1.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
ast (2.4.
|
9
|
+
ast (2.4.2)
|
10
10
|
colorize (0.8.1)
|
11
|
-
diff-lcs (1.
|
12
|
-
fasterer (0.
|
11
|
+
diff-lcs (1.4.4)
|
12
|
+
fasterer (0.9.0)
|
13
13
|
colorize (~> 0.7)
|
14
|
-
ruby_parser (>= 3.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
ast (~> 2.4.0)
|
14
|
+
ruby_parser (>= 3.14.1)
|
15
|
+
parallel (1.20.1)
|
16
|
+
parser (3.0.2.0)
|
17
|
+
ast (~> 2.4.1)
|
19
18
|
rainbow (3.0.0)
|
20
|
-
rake (
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
rspec-
|
25
|
-
|
26
|
-
rspec-
|
27
|
-
rspec-
|
19
|
+
rake (13.0.6)
|
20
|
+
regexp_parser (2.1.1)
|
21
|
+
rexml (3.2.5)
|
22
|
+
rspec (3.10.0)
|
23
|
+
rspec-core (~> 3.10.0)
|
24
|
+
rspec-expectations (~> 3.10.0)
|
25
|
+
rspec-mocks (~> 3.10.0)
|
26
|
+
rspec-core (3.10.1)
|
27
|
+
rspec-support (~> 3.10.0)
|
28
|
+
rspec-expectations (3.10.1)
|
28
29
|
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
-
rspec-support (~> 3.
|
30
|
-
rspec-mocks (3.
|
30
|
+
rspec-support (~> 3.10.0)
|
31
|
+
rspec-mocks (3.10.2)
|
31
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
-
rspec-support (~> 3.
|
33
|
-
rspec-support (3.
|
34
|
-
rubocop (
|
35
|
-
jaro_winkler (~> 1.5.1)
|
33
|
+
rspec-support (~> 3.10.0)
|
34
|
+
rspec-support (3.10.2)
|
35
|
+
rubocop (1.18.3)
|
36
36
|
parallel (~> 1.10)
|
37
|
-
parser (>=
|
37
|
+
parser (>= 3.0.0.0)
|
38
38
|
rainbow (>= 2.2.2, < 4.0)
|
39
|
+
regexp_parser (>= 1.8, < 3.0)
|
40
|
+
rexml
|
41
|
+
rubocop-ast (>= 1.7.0, < 2.0)
|
39
42
|
ruby-progressbar (~> 1.7)
|
40
|
-
unicode-display_width (>= 1.4.0, <
|
41
|
-
rubocop-
|
42
|
-
|
43
|
-
rubocop-
|
44
|
-
rubocop (>=
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
44
|
+
rubocop-ast (1.8.0)
|
45
|
+
parser (>= 3.0.1.1)
|
46
|
+
rubocop-performance (1.11.4)
|
47
|
+
rubocop (>= 1.7.0, < 2.0)
|
48
|
+
rubocop-ast (>= 0.4.0)
|
49
|
+
rubocop-rake (0.6.0)
|
50
|
+
rubocop (~> 1.0)
|
51
|
+
rubocop-rspec (2.4.0)
|
52
|
+
rubocop (~> 1.0)
|
53
|
+
rubocop-ast (>= 1.1.0)
|
54
|
+
ruby-progressbar (1.11.0)
|
55
|
+
ruby_parser (3.16.0)
|
56
|
+
sexp_processor (~> 4.15, >= 4.15.1)
|
57
|
+
sexp_processor (4.15.3)
|
58
|
+
unicode-display_width (2.0.0)
|
50
59
|
|
51
60
|
PLATFORMS
|
52
61
|
ruby
|
@@ -59,7 +68,8 @@ DEPENDENCIES
|
|
59
68
|
rspec
|
60
69
|
rubocop
|
61
70
|
rubocop-performance
|
71
|
+
rubocop-rake
|
62
72
|
rubocop-rspec
|
63
73
|
|
64
74
|
BUNDLED WITH
|
65
|
-
2.
|
75
|
+
2.2.24
|
data/lib/lite/memoize.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require 'lite/memoize/version'
|
4
|
+
require 'lite/memoize/alias'
|
5
|
+
require 'lite/memoize/table'
|
6
|
+
require 'lite/memoize/instance'
|
7
|
+
require 'lite/memoize/klass'
|
8
|
+
require 'lite/memoize/variable'
|
data/lib/lite/memoize/alias.rb
CHANGED
@@ -34,13 +34,13 @@ module Lite
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
alias clear clear_cache
|
37
38
|
alias flush_cache clear_cache
|
38
39
|
|
39
40
|
end
|
40
41
|
|
41
42
|
class << self
|
42
43
|
|
43
|
-
# rubocop:disable Lint/NestedMethodDefinition
|
44
44
|
def extended(extender)
|
45
45
|
Lite::Memoize::Alias.memoist_eval(extender) do
|
46
46
|
return if singleton_class.method_defined?(:memoized_methods)
|
@@ -50,7 +50,6 @@ module Lite
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
|
-
# rubocop:enable Lint/NestedMethodDefinition
|
54
53
|
|
55
54
|
def memoized_ivar_for(method_name, as = nil)
|
56
55
|
"@#{memoized_prefix(as)}_#{escape_punctuation(method_name)}"
|
@@ -26,11 +26,11 @@ module Lite
|
|
26
26
|
store.delete(key)
|
27
27
|
end
|
28
28
|
|
29
|
-
# :
|
29
|
+
# rubocop:disable Style/ExplicitBlockArgument
|
30
30
|
def each
|
31
31
|
store.each { |key, val| yield(key, val) }
|
32
32
|
end
|
33
|
-
# :
|
33
|
+
# rubocop:enable Style/ExplicitBlockArgument
|
34
34
|
|
35
35
|
def empty?
|
36
36
|
store.empty?
|
data/lib/lite/memoize/klass.rb
CHANGED
@@ -12,13 +12,11 @@ module Lite
|
|
12
12
|
define_method(method_name) do |*args|
|
13
13
|
key = self.class.caller_key(args, as: as || method_name)
|
14
14
|
|
15
|
-
self.class.store[key] ||= inner_method.
|
15
|
+
self.class.store[key] ||= inner_method.bind_call(self, *args)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
# rubocop:disable Style/AccessModifierDeclarations
|
20
19
|
public :caller_key
|
21
|
-
# rubocop:enable Style/AccessModifierDeclarations
|
22
20
|
|
23
21
|
end
|
24
22
|
end
|
data/lib/lite/memoize/version.rb
CHANGED
data/lite-memoize.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
)
|
26
26
|
else
|
27
27
|
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
28
|
-
|
28
|
+
'public gem pushes.'
|
29
29
|
end
|
30
30
|
|
31
31
|
# Specify which files should be added to the gem when it is released.
|
@@ -43,5 +43,6 @@ Gem::Specification.new do |spec|
|
|
43
43
|
spec.add_development_dependency 'rspec'
|
44
44
|
spec.add_development_dependency 'rubocop'
|
45
45
|
spec.add_development_dependency 'rubocop-performance'
|
46
|
+
spec.add_development_dependency 'rubocop-rake'
|
46
47
|
spec.add_development_dependency 'rubocop-rspec'
|
47
48
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lite-memoize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop-rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop-rspec
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,7 +122,7 @@ dependencies:
|
|
108
122
|
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
|
-
description:
|
125
|
+
description:
|
112
126
|
email:
|
113
127
|
- j.gomez@drexed.com
|
114
128
|
executables: []
|
@@ -151,7 +165,7 @@ homepage: http://drexed.github.io/lite-memoize
|
|
151
165
|
licenses:
|
152
166
|
- MIT
|
153
167
|
metadata: {}
|
154
|
-
post_install_message:
|
168
|
+
post_install_message:
|
155
169
|
rdoc_options: []
|
156
170
|
require_paths:
|
157
171
|
- lib
|
@@ -166,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
180
|
- !ruby/object:Gem::Version
|
167
181
|
version: '0'
|
168
182
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
170
|
-
signing_key:
|
183
|
+
rubygems_version: 3.2.24
|
184
|
+
signing_key:
|
171
185
|
specification_version: 4
|
172
186
|
summary: Cache and memoization helpers for ruby Ruby classes
|
173
187
|
test_files: []
|