dry-core 0.8.1 → 0.9.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/CHANGELOG.md +33 -2
- data/LICENSE +1 -1
- data/dry-core.gemspec +1 -0
- data/lib/dry/core/class_attributes.rb +1 -3
- data/lib/dry/core/equalizer.rb +15 -11
- data/lib/dry/core/errors.rb +1 -1
- data/lib/dry/core/memoizable.rb +3 -5
- data/lib/dry/core/version.rb +1 -1
- data/lib/dry/core.rb +34 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81d1266061bbae6eb6d4c08dba39d2787f29f033ec6b8ed8555830e170cae6fc
|
4
|
+
data.tar.gz: bb44a8177749013af0a3245e5e7e9c168818700c6d93b5dbbcf4d46d05e9e4fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48c5e7b008c7f1b3ec9d23801f020ee67f34199aec9e9690066cd7a4316e7d79e48c77056df180679e22767b367b4988c0f617948c49d931e5d62f3be54a1c4f
|
7
|
+
data.tar.gz: a2eb13da61361ef1d7c2ebb52390df5406f1598d1a9f64c2b11de9fc574d51f28920cc34342dfa3027bb9eb73b13802114b0d0aaafd51e0688cda7b66fd647bc
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,37 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.9.1 2022-10-18
|
4
|
+
|
5
|
+
|
6
|
+
### Changed
|
7
|
+
|
8
|
+
- Correct missing constant for IDENTITY (issue #75 fixed via #76) (@poloka)
|
9
|
+
|
10
|
+
[Compare v0.9.0...v0.9.1](https://github.com/dry-rb/dry-core/compare/v0.9.0...v0.9.1)
|
11
|
+
|
12
|
+
## 0.9.0 2022-10-15
|
13
|
+
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- dry-core now uses zeitwerk for autoloading (@solnic)
|
18
|
+
|
19
|
+
[Compare v0.8.1...v0.9.0](https://github.com/dry-rb/dry-core/compare/v0.8.1...v0.9.0)
|
20
|
+
|
21
|
+
## 0.8.1 2022-07-27
|
22
|
+
|
23
|
+
|
24
|
+
### Fixed
|
25
|
+
|
26
|
+
- [memoizable] plays better with inheritance.
|
27
|
+
There were cases when cached values from base claesses were used, see #70 (@flash-gordon)
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
[Compare v0.8.0...v0.8.1](https://github.com/dry-rb/dry-core/compare/v0.8.0...v0.8.1)
|
32
|
+
|
33
|
+
## 0.8.0 2022-07-15
|
34
|
+
|
4
35
|
|
5
36
|
### Added
|
6
37
|
|
@@ -12,7 +43,7 @@
|
|
12
43
|
This changes the order of returned subclasses (immediate subclasses now go first) (@flash-gordon)
|
13
44
|
|
14
45
|
|
15
|
-
[Compare v0.7.1...v0.8.0](https://github.com/dry-rb/dry-core/compare/v0.7.1...
|
46
|
+
[Compare v0.7.1...v0.8.0](https://github.com/dry-rb/dry-core/compare/v0.7.1...v0.8.0)
|
16
47
|
|
17
48
|
## 0.7.1 2021-07-10
|
18
49
|
|
data/LICENSE
CHANGED
data/dry-core.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
# to update dependencies edit project.yml
|
32
32
|
spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
|
33
|
+
spec.add_runtime_dependency "zeitwerk", "~> 2.6"
|
33
34
|
|
34
35
|
spec.add_development_dependency "bundler"
|
35
36
|
spec.add_development_dependency "rake"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "dry/core/constants"
|
4
|
-
require "dry/core/errors"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Core
|
@@ -10,7 +9,6 @@ module Dry
|
|
10
9
|
# @api public
|
11
10
|
module ClassAttributes
|
12
11
|
include Constants
|
13
|
-
|
14
12
|
# Specify what attributes a class will use
|
15
13
|
#
|
16
14
|
# @example
|
@@ -86,7 +84,7 @@ module Dry
|
|
86
84
|
elsif type === value # rubocop:disable Style/CaseEquality
|
87
85
|
instance_variable_set(ivar, coerce.call(value))
|
88
86
|
else
|
89
|
-
raise
|
87
|
+
raise InvalidClassAttributeValueError.new(name, value)
|
90
88
|
end
|
91
89
|
end
|
92
90
|
end
|
data/lib/dry/core/equalizer.rb
CHANGED
@@ -1,17 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Dry
|
4
|
-
# Build an equalizer module for the inclusion in other class
|
5
|
-
#
|
6
|
-
# ## Credits
|
7
|
-
#
|
8
|
-
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
9
|
-
#
|
10
|
-
# @api public
|
11
|
-
def self.Equalizer(*keys, **options)
|
12
|
-
Dry::Core::Equalizer.new(*keys, **options)
|
13
|
-
end
|
14
|
-
|
15
4
|
module Core
|
16
5
|
# Define equality, equivalence and inspection methods
|
17
6
|
class Equalizer < ::Module
|
@@ -149,4 +138,19 @@ module Dry
|
|
149
138
|
end
|
150
139
|
end
|
151
140
|
end
|
141
|
+
|
142
|
+
# Old modules that depend on dry/core/equalizer may miss
|
143
|
+
# this method if dry/core is not required explicitly
|
144
|
+
unless singleton_class.method_defined?(:Equalizer)
|
145
|
+
# Build an equalizer module for the inclusion in other class
|
146
|
+
#
|
147
|
+
# ## Credits
|
148
|
+
#
|
149
|
+
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
150
|
+
#
|
151
|
+
# @api public
|
152
|
+
def self.Equalizer(*keys, **options)
|
153
|
+
Dry::Core::Equalizer.new(*keys, **options)
|
154
|
+
end
|
155
|
+
end
|
152
156
|
end
|
data/lib/dry/core/errors.rb
CHANGED
data/lib/dry/core/memoizable.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/core/deprecations"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Core
|
7
5
|
module Memoizable
|
@@ -91,7 +89,7 @@ module Dry
|
|
91
89
|
define_method(method.name) do
|
92
90
|
value = super()
|
93
91
|
|
94
|
-
if kernel[:frozen].
|
92
|
+
if kernel[:frozen].bind_call(self)
|
95
93
|
# It's not possible to modify singleton classes
|
96
94
|
# of frozen objects
|
97
95
|
mod.remove_method(method.name)
|
@@ -113,8 +111,8 @@ module Dry
|
|
113
111
|
# expect :)
|
114
112
|
attr_name = :"__memozed_#{key}__"
|
115
113
|
ivar_name = :"@#{attr_name}"
|
116
|
-
kernel[:ivar_set].
|
117
|
-
eigenclass = kernel[:singleton].
|
114
|
+
kernel[:ivar_set].bind_call(self, ivar_name, value)
|
115
|
+
eigenclass = kernel[:singleton].bind_call(self)
|
118
116
|
eigenclass.attr_reader(attr_name)
|
119
117
|
eigenclass.alias_method(method.name, attr_name)
|
120
118
|
eigenclass.remove_method(attr_name)
|
data/lib/dry/core/version.rb
CHANGED
data/lib/dry/core.rb
CHANGED
@@ -1,10 +1,44 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "zeitwerk"
|
4
|
+
|
5
|
+
require "dry/core/constants"
|
6
|
+
require "dry/core/errors"
|
3
7
|
require "dry/core/version"
|
4
8
|
|
5
9
|
# :nodoc:
|
6
10
|
module Dry
|
7
11
|
# :nodoc:
|
8
12
|
module Core
|
13
|
+
include Constants
|
14
|
+
|
15
|
+
def self.loader
|
16
|
+
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
17
|
+
root = File.expand_path("..", __dir__)
|
18
|
+
loader.tag = "dry-core"
|
19
|
+
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-core.rb")
|
20
|
+
loader.push_dir(root)
|
21
|
+
loader.ignore(
|
22
|
+
"#{root}/dry-core.rb",
|
23
|
+
"#{root}/dry/core/{constants,errors,version}.rb"
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
loader.setup
|
29
|
+
end
|
30
|
+
|
31
|
+
# See dry/core/equalizer.rb
|
32
|
+
unless singleton_class.method_defined?(:Equalizer)
|
33
|
+
# Build an equalizer module for the inclusion in other class
|
34
|
+
#
|
35
|
+
# ## Credits
|
36
|
+
#
|
37
|
+
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
38
|
+
#
|
39
|
+
# @api public
|
40
|
+
def self.Equalizer(*keys, **options)
|
41
|
+
Dry::Core::Equalizer.new(*keys, **options)
|
42
|
+
end
|
9
43
|
end
|
10
44
|
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: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shilnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: zeitwerk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|