dry-core 1.0.2 → 1.1.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/CHANGELOG.md +11 -1
- data/README.md +2 -2
- data/dry-core.gemspec +9 -12
- data/lib/dry/core/cache.rb +3 -3
- data/lib/dry/core/class_builder.rb +5 -5
- data/lib/dry/core/constants.rb +2 -2
- data/lib/dry/core/container/item.rb +7 -4
- data/lib/dry/core/container/mixin.rb +16 -16
- data/lib/dry/core/container/namespace_dsl.rb +4 -4
- data/lib/dry/core/container/resolver.rb +4 -4
- data/lib/dry/core/container/stub.rb +1 -1
- data/lib/dry/core/deprecations.rb +2 -2
- data/lib/dry/core/descendants_tracker.rb +1 -1
- data/lib/dry/core/equalizer.rb +1 -1
- data/lib/dry/core/errors.rb +1 -1
- data/lib/dry/core/extensions.rb +2 -2
- data/lib/dry/core/inflector.rb +8 -6
- data/lib/dry/core/memoizable.rb +5 -16
- data/lib/dry/core/version.rb +1 -1
- data/lib/dry/core.rb +4 -4
- metadata +7 -48
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ada367e2c1685eb461bc598f50ccf1496db04ca3872db6767cb78b68f662ce17
|
|
4
|
+
data.tar.gz: 2d4649248b3f5ed774e29a4bca37330aa38c0a044f834f01af9181d4454ebf9b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0f4a9cecf88aea238ea6fd977edd0878bc83c773a7f2955afec6552092ebcad0717a4978b47f4ceeb1dd316d201ba0adba4c4d6934c8b01a8eb3eac4f6d43d0e
|
|
7
|
+
data.tar.gz: 86b97e82c64baae2ae65c7da27c91102f1bc21a0c0c3c58a9c15dc541ebd10efeb9f1e5f8764297ad12a403e14be0d0ec15f5148182b83c0f891312824c03a42
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
|
2
2
|
|
|
3
|
+
## 1.1.0 2025-01-04
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Changed
|
|
7
|
+
|
|
8
|
+
- Minimal Ruby version is 3.1 (@flash-gordon)
|
|
9
|
+
- Fixed clash with `dry-logger` (see #80) (@flash-gordon)
|
|
10
|
+
|
|
11
|
+
[Compare v1.0.1...v1.1.0](https://github.com/dry-rb/dry-core/compare/v1.0.1...v1.1.0)
|
|
12
|
+
|
|
3
13
|
## 1.0.1 2023-08-06
|
|
4
14
|
|
|
5
15
|
|
|
@@ -12,7 +22,7 @@
|
|
|
12
22
|
|
|
13
23
|
### Changed
|
|
14
24
|
|
|
15
|
-
- Minimal Ruby version is 3.0
|
|
25
|
+
- Minimal Ruby version is 3.0 (@flash-gordon)
|
|
16
26
|
|
|
17
27
|
[Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-core/compare/v1.0.0...v1.0.1)
|
|
18
28
|
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
[gem]: https://rubygems.org/gems/dry-core
|
|
3
3
|
[actions]: https://github.com/dry-rb/dry-core/actions
|
|
4
4
|
|
|
5
|
-
# dry-core [][gem] [][gem] [][actions]
|
|
6
6
|
|
|
7
7
|
## Links
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
This library officially supports the following Ruby versions:
|
|
16
16
|
|
|
17
|
-
* MRI `>= 3.
|
|
17
|
+
* MRI `>= 3.1`
|
|
18
18
|
* jruby `>= 9.4` (not tested on CI)
|
|
19
19
|
|
|
20
20
|
## License
|
data/dry-core.gemspec
CHANGED
|
@@ -21,19 +21,16 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.executables = []
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
-
spec.metadata["allowed_push_host"]
|
|
25
|
-
spec.metadata["changelog_uri"]
|
|
26
|
-
spec.metadata["source_code_uri"]
|
|
27
|
-
spec.metadata["bug_tracker_uri"]
|
|
24
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
25
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-core/blob/main/CHANGELOG.md"
|
|
26
|
+
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-core"
|
|
27
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-core/issues"
|
|
28
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
|
28
29
|
|
|
29
|
-
spec.required_ruby_version = ">= 3.
|
|
30
|
+
spec.required_ruby_version = ">= 3.1.0"
|
|
30
31
|
|
|
31
32
|
# to update dependencies edit project.yml
|
|
32
|
-
spec.
|
|
33
|
-
spec.
|
|
34
|
-
spec.
|
|
35
|
-
|
|
36
|
-
spec.add_development_dependency "bundler"
|
|
37
|
-
spec.add_development_dependency "rake"
|
|
38
|
-
spec.add_development_dependency "rspec"
|
|
33
|
+
spec.add_dependency "concurrent-ruby", "~> 1.0"
|
|
34
|
+
spec.add_dependency "logger"
|
|
35
|
+
spec.add_dependency "zeitwerk", "~> 2.6"
|
|
39
36
|
end
|
data/lib/dry/core/cache.rb
CHANGED
|
@@ -23,7 +23,7 @@ module Dry
|
|
|
23
23
|
def self.extended(klass)
|
|
24
24
|
super
|
|
25
25
|
klass.include(Methods)
|
|
26
|
-
klass.instance_variable_set(:@__cache__, Concurrent::Map.new)
|
|
26
|
+
klass.instance_variable_set(:@__cache__, ::Concurrent::Map.new)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
# @api private
|
|
@@ -48,8 +48,8 @@ module Dry
|
|
|
48
48
|
#
|
|
49
49
|
# @return [Object] block's return value (cached for subsequent calls with
|
|
50
50
|
# the same argument values)
|
|
51
|
-
def fetch_or_store(*args, &
|
|
52
|
-
cache.fetch_or_store(args.hash, &
|
|
51
|
+
def fetch_or_store(*args, &)
|
|
52
|
+
cache.fetch_or_store(args.hash, &)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
# Instance methods
|
|
@@ -4,14 +4,14 @@ module Dry
|
|
|
4
4
|
module Core
|
|
5
5
|
# Class for generating more classes
|
|
6
6
|
class ClassBuilder
|
|
7
|
-
ParentClassMismatch = Class.new(TypeError)
|
|
7
|
+
ParentClassMismatch = ::Class.new(::TypeError)
|
|
8
8
|
|
|
9
9
|
attr_reader :name, :parent, :namespace
|
|
10
10
|
|
|
11
11
|
def initialize(name:, parent: nil, namespace: nil)
|
|
12
12
|
@name = name
|
|
13
13
|
@namespace = namespace
|
|
14
|
-
@parent = parent || Object
|
|
14
|
+
@parent = parent || ::Object
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# Generate a class based on options
|
|
@@ -48,7 +48,7 @@ module Dry
|
|
|
48
48
|
|
|
49
49
|
# @api private
|
|
50
50
|
def create_anonymous
|
|
51
|
-
klass = Class.new(parent)
|
|
51
|
+
klass = ::Class.new(parent)
|
|
52
52
|
name = self.name
|
|
53
53
|
|
|
54
54
|
klass.singleton_class.class_eval do
|
|
@@ -64,7 +64,7 @@ module Dry
|
|
|
64
64
|
def create_named
|
|
65
65
|
name = self.name
|
|
66
66
|
base = create_base(namespace, name, parent)
|
|
67
|
-
klass = Class.new(base)
|
|
67
|
+
klass = ::Class.new(base)
|
|
68
68
|
|
|
69
69
|
namespace.module_eval do
|
|
70
70
|
remove_const(name)
|
|
@@ -93,7 +93,7 @@ module Dry
|
|
|
93
93
|
|
|
94
94
|
existing
|
|
95
95
|
else
|
|
96
|
-
klass = Class.new(parent || Object)
|
|
96
|
+
klass = ::Class.new(parent || ::Object)
|
|
97
97
|
namespace.const_set(name, klass)
|
|
98
98
|
klass
|
|
99
99
|
end
|
data/lib/dry/core/constants.rb
CHANGED
|
@@ -27,7 +27,7 @@ module Dry
|
|
|
27
27
|
# An empty string
|
|
28
28
|
EMPTY_STRING = ""
|
|
29
29
|
# Identity function
|
|
30
|
-
IDENTITY = (
|
|
30
|
+
IDENTITY = ->(x) { x }.freeze
|
|
31
31
|
|
|
32
32
|
# A special value you can use as a default to know if no arguments
|
|
33
33
|
# were passed to the method
|
|
@@ -40,7 +40,7 @@ module Dry
|
|
|
40
40
|
# puts value
|
|
41
41
|
# end
|
|
42
42
|
# end
|
|
43
|
-
Undefined = Object.new.tap do |undefined|
|
|
43
|
+
Undefined = ::Object.new.tap do |undefined|
|
|
44
44
|
# @api private
|
|
45
45
|
Self = -> { Undefined } # rubocop:disable Lint/ConstantDefinitionInBlock
|
|
46
46
|
|
|
@@ -8,6 +8,8 @@ module Dry
|
|
|
8
8
|
# @api abstract
|
|
9
9
|
#
|
|
10
10
|
class Item
|
|
11
|
+
NO_OPTIONS = {}.freeze
|
|
12
|
+
|
|
11
13
|
# @return [Mixed] the item to be solved later
|
|
12
14
|
attr_reader :item
|
|
13
15
|
|
|
@@ -15,16 +17,17 @@ module Dry
|
|
|
15
17
|
attr_reader :options
|
|
16
18
|
|
|
17
19
|
# @api abstract
|
|
18
|
-
def initialize(item, options =
|
|
20
|
+
def initialize(item, options = NO_OPTIONS)
|
|
19
21
|
@item = item
|
|
20
22
|
@options = {
|
|
21
|
-
call: item.is_a?(::Proc) && item.parameters.empty
|
|
22
|
-
|
|
23
|
+
call: item.is_a?(::Proc) && item.parameters.empty?,
|
|
24
|
+
**options
|
|
25
|
+
}
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
# @api abstract
|
|
26
29
|
def call
|
|
27
|
-
raise NotImplementedError
|
|
30
|
+
raise ::NotImplementedError
|
|
28
31
|
end
|
|
29
32
|
|
|
30
33
|
# @private
|
|
@@ -6,18 +6,18 @@ require "dry/core/constants"
|
|
|
6
6
|
module Dry
|
|
7
7
|
module Core
|
|
8
8
|
class Container
|
|
9
|
-
include Dry::Core::Constants
|
|
9
|
+
include ::Dry::Core::Constants
|
|
10
10
|
|
|
11
11
|
# @api public
|
|
12
|
-
Error = Class.new(StandardError)
|
|
12
|
+
Error = ::Class.new(::StandardError)
|
|
13
13
|
|
|
14
14
|
# Error raised when key is not defined in the registry
|
|
15
15
|
#
|
|
16
16
|
# @api public
|
|
17
|
-
KeyError = Class.new(::KeyError)
|
|
17
|
+
KeyError = ::Class.new(::KeyError)
|
|
18
18
|
|
|
19
|
-
if defined?(DidYouMean::KeyErrorChecker)
|
|
20
|
-
DidYouMean.correct_error(KeyError, DidYouMean::KeyErrorChecker)
|
|
19
|
+
if defined?(::DidYouMean::KeyErrorChecker)
|
|
20
|
+
::DidYouMean.correct_error(KeyError, ::DidYouMean::KeyErrorChecker)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# Mixin to expose Inversion of Control (IoC) container behaviour
|
|
@@ -68,7 +68,7 @@ module Dry
|
|
|
68
68
|
|
|
69
69
|
# @private
|
|
70
70
|
module Initializer
|
|
71
|
-
def initialize(
|
|
71
|
+
def initialize(...)
|
|
72
72
|
@_container = ::Concurrent::Hash.new
|
|
73
73
|
super
|
|
74
74
|
end
|
|
@@ -112,8 +112,8 @@ module Dry
|
|
|
112
112
|
config.registry.call(_container, key, item, options)
|
|
113
113
|
|
|
114
114
|
self
|
|
115
|
-
rescue FrozenError
|
|
116
|
-
raise FrozenError,
|
|
115
|
+
rescue ::FrozenError
|
|
116
|
+
raise ::FrozenError,
|
|
117
117
|
"can't modify frozen #{self.class} (when attempting to register '#{key}')"
|
|
118
118
|
end
|
|
119
119
|
|
|
@@ -128,8 +128,8 @@ module Dry
|
|
|
128
128
|
# @return [Mixed]
|
|
129
129
|
#
|
|
130
130
|
# @api public
|
|
131
|
-
def resolve(key, &
|
|
132
|
-
config.resolver.call(_container, key, &
|
|
131
|
+
def resolve(key, &)
|
|
132
|
+
config.resolver.call(_container, key, &)
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
# Resolve an item from the container
|
|
@@ -198,8 +198,8 @@ module Dry
|
|
|
198
198
|
# @return [Dry::Core::Container::Mixin] self
|
|
199
199
|
#
|
|
200
200
|
# @api public
|
|
201
|
-
def each_key(&
|
|
202
|
-
config.resolver.each_key(_container, &
|
|
201
|
+
def each_key(&)
|
|
202
|
+
config.resolver.each_key(_container, &)
|
|
203
203
|
self
|
|
204
204
|
end
|
|
205
205
|
|
|
@@ -215,8 +215,8 @@ module Dry
|
|
|
215
215
|
# @note In discussions with other developers, it was felt that being able to iterate
|
|
216
216
|
# over not just the registered keys, but to see what was registered would be
|
|
217
217
|
# very helpful. This is a step toward doing that.
|
|
218
|
-
def each(&
|
|
219
|
-
config.resolver.each(_container, &
|
|
218
|
+
def each(&)
|
|
219
|
+
config.resolver.each(_container, &)
|
|
220
220
|
end
|
|
221
221
|
|
|
222
222
|
# Decorates an item from the container with specified decorator
|
|
@@ -250,12 +250,12 @@ module Dry
|
|
|
250
250
|
# @return [Dry::Core::Container::Mixin] self
|
|
251
251
|
#
|
|
252
252
|
# @api public
|
|
253
|
-
def namespace(namespace, &
|
|
253
|
+
def namespace(namespace, &)
|
|
254
254
|
::Dry::Core::Container::NamespaceDSL.new(
|
|
255
255
|
self,
|
|
256
256
|
namespace,
|
|
257
257
|
config.namespace_separator,
|
|
258
|
-
&
|
|
258
|
+
&
|
|
259
259
|
)
|
|
260
260
|
|
|
261
261
|
self
|
|
@@ -34,12 +34,12 @@ module Dry
|
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def register(key,
|
|
38
|
-
super(namespaced(key),
|
|
37
|
+
def register(key, ...)
|
|
38
|
+
super(namespaced(key), ...)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def namespace(namespace, &
|
|
42
|
-
super(namespaced(namespace), &
|
|
41
|
+
def namespace(namespace, &)
|
|
42
|
+
super(namespaced(namespace), &)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def import(namespace)
|
|
@@ -66,8 +66,8 @@ module Dry
|
|
|
66
66
|
# @return Hash
|
|
67
67
|
#
|
|
68
68
|
# @api public
|
|
69
|
-
def each_key(container, &
|
|
70
|
-
container.each_key(&
|
|
69
|
+
def each_key(container, &)
|
|
70
|
+
container.each_key(&)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
# Calls block once for each key in container, passing the key and
|
|
@@ -81,8 +81,8 @@ module Dry
|
|
|
81
81
|
# @note In discussions with other developers, it was felt that being able
|
|
82
82
|
# to iterate over not just the registered keys, but to see what was
|
|
83
83
|
# registered would be very helpful. This is a step toward doing that.
|
|
84
|
-
def each(container, &
|
|
85
|
-
container.map { |key, value| [key, value.call] }.each(&
|
|
84
|
+
def each(container, &)
|
|
85
|
+
container.map { |key, value| [key, value.call] }.each(&)
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
end
|
|
@@ -14,7 +14,7 @@ module Dry
|
|
|
14
14
|
# Add a stub to the container
|
|
15
15
|
def stub(key, value, &block)
|
|
16
16
|
unless key?(key)
|
|
17
|
-
raise ArgumentError, "cannot stub #{key.to_s.inspect} - no such key in container"
|
|
17
|
+
raise ::ArgumentError, "cannot stub #{key.to_s.inspect} - no such key in container"
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
_stubs[key.to_s] = value
|
|
@@ -106,7 +106,7 @@ module Dry
|
|
|
106
106
|
if output.respond_to?(:warn)
|
|
107
107
|
@logger = output
|
|
108
108
|
else
|
|
109
|
-
@logger = Logger.new(output).tap do |logger|
|
|
109
|
+
@logger = ::Logger.new(output).tap do |logger|
|
|
110
110
|
logger.formatter = proc { |_, _, _, msg| "#{msg}\n" }
|
|
111
111
|
end
|
|
112
112
|
end
|
|
@@ -218,7 +218,7 @@ module Dry
|
|
|
218
218
|
message
|
|
219
219
|
)
|
|
220
220
|
|
|
221
|
-
mod = Module.new do
|
|
221
|
+
mod = ::Module.new do
|
|
222
222
|
define_method(:const_missing) do |missing|
|
|
223
223
|
if missing == constant_name
|
|
224
224
|
warn("#{full_msg}\n#{STACK.()}")
|
data/lib/dry/core/equalizer.rb
CHANGED
data/lib/dry/core/errors.rb
CHANGED
data/lib/dry/core/extensions.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Dry
|
|
|
25
25
|
def self.extended(obj)
|
|
26
26
|
super
|
|
27
27
|
obj.instance_variable_set(:@__available_extensions__, {})
|
|
28
|
-
obj.instance_variable_set(:@__loaded_extensions__, Set.new)
|
|
28
|
+
obj.instance_variable_set(:@__loaded_extensions__, ::Set.new)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
# Register an extension
|
|
@@ -50,7 +50,7 @@ module Dry
|
|
|
50
50
|
def load_extensions(*extensions)
|
|
51
51
|
extensions.each do |ext|
|
|
52
52
|
block = @__available_extensions__.fetch(ext) do
|
|
53
|
-
raise ArgumentError, "Unknown extension: #{ext.inspect}"
|
|
53
|
+
raise ::ArgumentError, "Unknown extension: #{ext.inspect}"
|
|
54
54
|
end
|
|
55
55
|
unless @__loaded_extensions__.include?(ext)
|
|
56
56
|
block.call
|
data/lib/dry/core/inflector.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Dry
|
|
|
12
12
|
],
|
|
13
13
|
dry_inflector: [
|
|
14
14
|
"dry/inflector",
|
|
15
|
-
proc { Dry::Inflector.new }
|
|
15
|
+
proc { ::Dry::Inflector.new }
|
|
16
16
|
],
|
|
17
17
|
inflecto: [
|
|
18
18
|
"inflecto",
|
|
@@ -25,7 +25,7 @@ module Dry
|
|
|
25
25
|
# @api private
|
|
26
26
|
def self.realize_backend(path, backend_factory)
|
|
27
27
|
require path
|
|
28
|
-
rescue LoadError
|
|
28
|
+
rescue ::LoadError
|
|
29
29
|
nil
|
|
30
30
|
else
|
|
31
31
|
backend_factory.call
|
|
@@ -37,9 +37,11 @@ module Dry
|
|
|
37
37
|
def self.detect_backend
|
|
38
38
|
BACKENDS.inject(nil) do |backend, (_, (path, factory))|
|
|
39
39
|
backend || realize_backend(path, factory)
|
|
40
|
-
end || raise(
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
end || raise(
|
|
41
|
+
LoadError,
|
|
42
|
+
"No inflector library could be found: " \
|
|
43
|
+
"please install either the `inflecto` or `activesupport` gem."
|
|
44
|
+
)
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
# Set preferred backend
|
|
@@ -47,7 +49,7 @@ module Dry
|
|
|
47
49
|
# @param [Symbol] name backend name (:activesupport or :inflecto)
|
|
48
50
|
def self.select_backend(name = nil)
|
|
49
51
|
if name && !BACKENDS.key?(name)
|
|
50
|
-
raise NameError, "Invalid inflector library selection: '#{name}'"
|
|
52
|
+
raise ::NameError, "Invalid inflector library selection: '#{name}'"
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
@inflector = name ? realize_backend(*BACKENDS[name]) : detect_backend
|
data/lib/dry/core/memoizable.rb
CHANGED
|
@@ -23,7 +23,7 @@ module Dry
|
|
|
23
23
|
module BasicObject
|
|
24
24
|
include Base
|
|
25
25
|
|
|
26
|
-
def new(
|
|
26
|
+
def new(*, **)
|
|
27
27
|
obj = super
|
|
28
28
|
obj.instance_eval { @__memoized__ = MEMOIZED_HASH.dup }
|
|
29
29
|
obj
|
|
@@ -33,15 +33,11 @@ module Dry
|
|
|
33
33
|
module Object
|
|
34
34
|
include Base
|
|
35
35
|
|
|
36
|
-
def new(
|
|
36
|
+
def new(*, **)
|
|
37
37
|
obj = super
|
|
38
38
|
obj.instance_variable_set(:@__memoized__, MEMOIZED_HASH.dup)
|
|
39
39
|
obj
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
if respond_to?(:ruby2_keywords, true)
|
|
43
|
-
ruby2_keywords(:new)
|
|
44
|
-
end
|
|
45
41
|
end
|
|
46
42
|
end
|
|
47
43
|
|
|
@@ -77,14 +73,13 @@ module Dry
|
|
|
77
73
|
|
|
78
74
|
# @api private
|
|
79
75
|
# rubocop:disable Metrics/AbcSize
|
|
80
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
|
81
76
|
def define_memoizable(method:)
|
|
82
77
|
parameters = method.parameters
|
|
83
78
|
mod = self
|
|
84
79
|
kernel = KERNEL
|
|
85
80
|
|
|
86
81
|
if parameters.empty?
|
|
87
|
-
key = "#{
|
|
82
|
+
key = "#{__id__}:#{method.name}".hash.abs
|
|
88
83
|
|
|
89
84
|
define_method(method.name) do
|
|
90
85
|
value = super()
|
|
@@ -134,7 +129,7 @@ module Dry
|
|
|
134
129
|
WARN
|
|
135
130
|
end
|
|
136
131
|
|
|
137
|
-
|
|
132
|
+
module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
|
138
133
|
def #{method.name}(#{params.join(", ")}) # def slow_calc(arg1, arg2, arg3)
|
|
139
134
|
key = [:"#{method.name}", #{binds.join(", ")}].hash # key = [:slow_calc, arg1, arg2, arg3].hash
|
|
140
135
|
#
|
|
@@ -146,16 +141,10 @@ module Dry
|
|
|
146
141
|
end # end
|
|
147
142
|
RUBY
|
|
148
143
|
|
|
149
|
-
if respond_to?(:ruby2_keywords, true) && mapping.key?(:reyrest)
|
|
150
|
-
ruby2_keywords(method.name)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
m
|
|
154
144
|
end
|
|
155
145
|
end
|
|
156
|
-
# rubocop:enable Metrics/AbcSize
|
|
157
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
|
158
146
|
|
|
147
|
+
# rubocop:enable Metrics/AbcSize
|
|
159
148
|
# @api private
|
|
160
149
|
def declaration(definition, lookup)
|
|
161
150
|
params = []
|
data/lib/dry/core/version.rb
CHANGED
data/lib/dry/core.rb
CHANGED
|
@@ -13,10 +13,10 @@ module Dry
|
|
|
13
13
|
include Constants
|
|
14
14
|
|
|
15
15
|
def self.loader
|
|
16
|
-
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
|
17
|
-
root = File.expand_path("..", __dir__)
|
|
16
|
+
@loader ||= ::Zeitwerk::Loader.new.tap do |loader|
|
|
17
|
+
root = ::File.expand_path("..", __dir__)
|
|
18
18
|
loader.tag = "dry-core"
|
|
19
|
-
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-core.rb")
|
|
19
|
+
loader.inflector = ::Zeitwerk::GemInflector.new("#{root}/dry-core.rb")
|
|
20
20
|
loader.push_dir(root)
|
|
21
21
|
loader.ignore(
|
|
22
22
|
"#{root}/dry-core.rb",
|
|
@@ -50,7 +50,7 @@ module Dry
|
|
|
50
50
|
#
|
|
51
51
|
# @api public
|
|
52
52
|
def self.Equalizer(*keys, **options)
|
|
53
|
-
Dry::Core::Equalizer.new(*keys, **options)
|
|
53
|
+
::Dry::Core::Equalizer.new(*keys, **options)
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nikita Shilnikov
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -52,48 +52,6 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '2.6'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: bundler
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rake
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rspec
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
55
|
description: A toolset of small support modules used throughout the dry-rb ecosystem
|
|
98
56
|
email:
|
|
99
57
|
- fg@flashgordon.ru
|
|
@@ -141,7 +99,8 @@ metadata:
|
|
|
141
99
|
changelog_uri: https://github.com/dry-rb/dry-core/blob/main/CHANGELOG.md
|
|
142
100
|
source_code_uri: https://github.com/dry-rb/dry-core
|
|
143
101
|
bug_tracker_uri: https://github.com/dry-rb/dry-core/issues
|
|
144
|
-
|
|
102
|
+
rubygems_mfa_required: 'true'
|
|
103
|
+
post_install_message:
|
|
145
104
|
rdoc_options: []
|
|
146
105
|
require_paths:
|
|
147
106
|
- lib
|
|
@@ -149,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
149
108
|
requirements:
|
|
150
109
|
- - ">="
|
|
151
110
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 3.
|
|
111
|
+
version: 3.1.0
|
|
153
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
113
|
requirements:
|
|
155
114
|
- - ">="
|
|
@@ -157,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
157
116
|
version: '0'
|
|
158
117
|
requirements: []
|
|
159
118
|
rubygems_version: 3.3.27
|
|
160
|
-
signing_key:
|
|
119
|
+
signing_key:
|
|
161
120
|
specification_version: 4
|
|
162
121
|
summary: A toolset of small support modules used throughout the dry-rb ecosystem
|
|
163
122
|
test_files: []
|