dry-auto_inject 0.4.4 → 0.4.5
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 +14 -6
- data/lib/dry/auto_inject/strategies/kwargs.rb +29 -20
- data/lib/dry/auto_inject/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11770f3fb1b553afb3fa69c334e9601345416da7
|
4
|
+
data.tar.gz: 3310eb2c3808a135886b9a4289b4a946205ca43b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a06aeae18d58438ccfbdca3dcf55452e3fae14a61fcfedab2abc4869248a64d3742a06ffdf18914f4ec2060e421ae08183cbe95e928e9764aedf19f66200f690
|
7
|
+
data.tar.gz: 53fa1615a976fadd6ef6f12e88c9dabaf89cd24c5c794bc22ef12fe3da2de77240486935c8a944cfe9fd2450ef9e95a14765b7179630430a0eef9a7fa1fe5445
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.4.5 / 2018-01-02
|
2
|
+
|
3
|
+
### Added
|
4
|
+
|
5
|
+
- Improved handling of kwargs being passed to #initialize’s super method (timriley)
|
6
|
+
|
7
|
+
[Compare v0.4.4...v0.4.5](https://github.com/dry-rb/dry-auto_inject/compare/v0.4.4...v0.4.5)
|
8
|
+
|
1
9
|
# 0.4.4 / 2017-09-14
|
2
10
|
|
3
11
|
### Added
|
@@ -10,7 +18,7 @@
|
|
10
18
|
|
11
19
|
- Push sequential arguments along with keywords in the kwargs strategy (hbda + vladra in [#32](https://github.com/dry-rb/dry-auto_inject/pull/32))
|
12
20
|
|
13
|
-
[Compare v0.4.2...v0.4.3](https://github.com/
|
21
|
+
[Compare v0.4.2...v0.4.3](https://github.com/dry-rb/dry-auto_inject/compare/v0.4.2...v0.4.3)
|
14
22
|
|
15
23
|
# 0.4.2 / 2016-10-10
|
16
24
|
|
@@ -18,7 +26,7 @@
|
|
18
26
|
|
19
27
|
- Fixed issue where injectors for different containers could not be used on different classes in an inheritance hierarchy (timriley in [#31](https://github.com/dry-rb/dry-auto_inject/pull/31))
|
20
28
|
|
21
|
-
[Compare v0.4.1...v0.4.2](https://github.com/
|
29
|
+
[Compare v0.4.1...v0.4.2](https://github.com/dry-rb/dry-auto_inject/compare/v0.4.1...v0.4.2)
|
22
30
|
|
23
31
|
# 0.4.1 / 2016-08-14
|
24
32
|
|
@@ -26,7 +34,7 @@
|
|
26
34
|
|
27
35
|
- Loosened version dependency on dry-container (AMHOL)
|
28
36
|
|
29
|
-
[Compare v0.4.0...v0.4.1](https://github.com/
|
37
|
+
[Compare v0.4.0...v0.4.1](https://github.com/dry-rb/dry-auto_inject/compare/v0.4.0...v0.4.1)
|
30
38
|
|
31
39
|
# 0.4.0 / 2016-07-26
|
32
40
|
|
@@ -57,7 +65,7 @@
|
|
57
65
|
|
58
66
|
- Fixed issue with kwargs injectors used at multiple points in a class inheritance heirarchy (flash-gordon in [#27](https://github.com/dry-rb/dry-auto_inject/pull/27))
|
59
67
|
|
60
|
-
[Compare v0.3.0...v0.4.0](https://github.com/
|
68
|
+
[Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-auto_inject/compare/v0.3.0...v0.4.0)
|
61
69
|
|
62
70
|
# 0.3.0, 2016-06-02
|
63
71
|
|
@@ -145,7 +153,7 @@
|
|
145
153
|
* `kwargs` is the new default injection strategy
|
146
154
|
* Rubinius support is not available for the `kwargs` strategy (see [#18](https://github.com/dry-rb/dry-auto_inject/issues/18))
|
147
155
|
|
148
|
-
[Compare v0.2.0...v0.3.0](https://github.com/
|
156
|
+
[Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-auto_inject/compare/v0.2.0...v0.3.0)
|
149
157
|
|
150
158
|
# v0.2.0 2016-02-09
|
151
159
|
|
@@ -153,7 +161,7 @@
|
|
153
161
|
|
154
162
|
* Support for hashes as constructor arguments via `Import.hash` interface (solnic)
|
155
163
|
|
156
|
-
[Compare v0.1.0...v0.2.0](https://github.com/
|
164
|
+
[Compare v0.1.0...v0.2.0](https://github.com/dry-rb/dry-auto_inject/compare/v0.1.0...v0.2.0)
|
157
165
|
|
158
166
|
# v0.1.0 2015-11-12
|
159
167
|
|
@@ -9,12 +9,14 @@ module Dry
|
|
9
9
|
|
10
10
|
def define_new
|
11
11
|
class_mod.class_exec(container, dependency_map) do |container, dependency_map|
|
12
|
+
map = dependency_map.to_h.to_a
|
13
|
+
|
12
14
|
define_method :new do |*args, **kwargs|
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
map.each do |name, identifier|
|
16
|
+
kwargs[name] ||= container[identifier]
|
17
|
+
end
|
16
18
|
|
17
|
-
super(*args, **
|
19
|
+
super(*args, **kwargs)
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
@@ -32,7 +34,7 @@ module Dry
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def define_initialize_with_keywords
|
35
|
-
initialize_params = dependency_map.names.map { |name| "#{name}: nil" }.join(
|
37
|
+
initialize_params = dependency_map.names.map { |name| "#{name}: nil" }.join(", ")
|
36
38
|
|
37
39
|
instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
38
40
|
def initialize(#{initialize_params})
|
@@ -40,28 +42,35 @@ module Dry
|
|
40
42
|
#{dependency_map.names.map { |name| "@#{name} = #{name}" }.join("\n")}
|
41
43
|
end
|
42
44
|
RUBY
|
45
|
+
|
43
46
|
self
|
44
47
|
end
|
45
48
|
|
46
49
|
def define_initialize_with_splat(super_method)
|
47
|
-
super_kwarg_names = super_method.parameters.
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
super_kwarg_names = super_method.parameters.each_with_object([]) { |(type, name), names|
|
51
|
+
names << name if [:key, :keyreq].include?(type)
|
52
|
+
}
|
53
|
+
|
54
|
+
instance_mod.class_exec(dependency_map) do |dependency_map|
|
55
|
+
define_method :initialize do |*args, **kwargs|
|
56
|
+
super_kwargs = kwargs.each_with_object({}) { |(key, _), hsh|
|
57
|
+
if !dependency_map.names.include?(key) || super_kwarg_names.include?(key)
|
58
|
+
hsh[key] = kwargs[key]
|
59
|
+
end
|
60
|
+
}
|
61
|
+
|
62
|
+
if super_kwargs.any?
|
63
|
+
super(*args, **super_kwargs)
|
64
|
+
else
|
65
|
+
super(*args)
|
66
|
+
end
|
67
|
+
|
68
|
+
dependency_map.names.each do |name|
|
69
|
+
instance_variable_set :"@#{name}", kwargs[name]
|
70
|
+
end
|
56
71
|
end
|
57
72
|
end
|
58
73
|
|
59
|
-
instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
60
|
-
def initialize(*args, **kwargs)
|
61
|
-
super(*args, #{super_kw_params})
|
62
|
-
#{dependency_map.names.map { |name| "@#{name} = kwargs[:#{name}]" }.join("\n")}
|
63
|
-
end
|
64
|
-
RUBY
|
65
74
|
self
|
66
75
|
end
|
67
76
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-auto_inject
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-container
|