dry-initializer 1.4.0 → 1.4.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/.rspec +1 -0
- data/CHANGELOG.md +12 -0
- data/dry-initializer.gemspec +1 -1
- data/lib/dry/initializer.rb +4 -7
- data/lib/dry/initializer/{dsl.rb → class_dsl.rb} +6 -13
- data/lib/dry/initializer/instance_dsl.rb +15 -0
- data/spec/definition_spec.rb +8 -8
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ceae8e2fd7db0c6573d23b4fc02b3a28c87899b
|
4
|
+
data.tar.gz: a9535d4a290c5d1fff4172d0a3189e657c408a0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c09a05a65e40b00ad7b1e31fa3bdc0f0960b36cd1a8fca69826ba9ed706e8c16861a627fe12229f86282aa044d7f1aec77bc7b0fd630d6d7daf7e8d15b8bd208
|
7
|
+
data.tar.gz: 9e956de0414155a0b0350a93641925bc972992aa4f0344bc841cc1c808f7b35129c2844cff14205d05fba6f3045bb8c4b99469ff4fe0450593fb388a261999c8
|
data/.rspec
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## v1.4.1 2017-04-05
|
2
|
+
|
3
|
+
### Fixed
|
4
|
+
- Warning about redefined `#initialize` in case the method reloaded in a klass
|
5
|
+
that extends the module (nepalez, sergey-chechaev)
|
6
|
+
|
7
|
+
### Internals
|
8
|
+
- Rename `Dry::Initializer::DSL` -> `Dry::Initializer::ClassDSL` (nepalez)
|
9
|
+
- Add `Dry::Initializer::InstanceDSL` (nepalez)
|
10
|
+
|
11
|
+
[Compare v1.4.0...v1.4.1](https://github.com/dry-rb/dry-initializer/compare/v1.4.0...v1.4.1)
|
12
|
+
|
1
13
|
## v1.4.0 2017-03-08
|
2
14
|
|
3
15
|
### Changed (backward-incompatible)
|
data/dry-initializer.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = "dry-initializer"
|
3
|
-
gem.version = "1.4.
|
3
|
+
gem.version = "1.4.1"
|
4
4
|
gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
|
5
5
|
gem.email = ["hashtable@yandex.ru", "andrew.kozin@gmail.com"]
|
6
6
|
gem.homepage = "https://github.com/dryrb/dry-initializer"
|
data/lib/dry/initializer.rb
CHANGED
@@ -8,7 +8,8 @@ module Dry
|
|
8
8
|
require_relative "initializer/param"
|
9
9
|
require_relative "initializer/option"
|
10
10
|
require_relative "initializer/builder"
|
11
|
-
require_relative "initializer/
|
11
|
+
require_relative "initializer/instance_dsl"
|
12
|
+
require_relative "initializer/class_dsl"
|
12
13
|
|
13
14
|
# rubocop: disable Style/ConstantName
|
14
15
|
Mixin = self # for compatibility to versions below 0.12
|
@@ -18,7 +19,7 @@ module Dry
|
|
18
19
|
obj.define_singleton_method(:inspect) { "Dry::Initializer::UNDEFINED" }
|
19
20
|
end.freeze
|
20
21
|
|
21
|
-
extend Dry::Initializer::
|
22
|
+
extend Dry::Initializer::ClassDSL
|
22
23
|
|
23
24
|
def param(*args)
|
24
25
|
__initializer_builder__.param(*args).call(__initializer_mixin__)
|
@@ -31,11 +32,7 @@ module Dry
|
|
31
32
|
private
|
32
33
|
|
33
34
|
def __initializer_mixin__
|
34
|
-
@__initializer_mixin__ ||= Module.new
|
35
|
-
def initialize(*args)
|
36
|
-
__initialize__(*args)
|
37
|
-
end
|
38
|
-
end
|
35
|
+
@__initializer_mixin__ ||= Module.new
|
39
36
|
end
|
40
37
|
|
41
38
|
def __initializer_builder__(**settings)
|
@@ -1,22 +1,17 @@
|
|
1
1
|
module Dry::Initializer
|
2
|
-
module
|
2
|
+
module ClassDSL
|
3
3
|
attr_reader :config
|
4
4
|
|
5
5
|
def [](**settings)
|
6
6
|
Module.new do
|
7
|
-
extend Dry::Initializer::
|
7
|
+
extend Dry::Initializer::ClassDSL
|
8
8
|
include Dry::Initializer
|
9
9
|
@config = settings
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
def define(fn = nil, &block)
|
14
|
-
mixin
|
15
|
-
def initialize(*args)
|
16
|
-
__initialize__(*args)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
14
|
+
mixin = Module.new { include InstanceDSL }
|
20
15
|
builder = Builder.new Hash(config)
|
21
16
|
builder.instance_exec(&(fn || block))
|
22
17
|
builder.call(mixin)
|
@@ -29,12 +24,10 @@ module Dry::Initializer
|
|
29
24
|
super
|
30
25
|
mixin = klass.send(:__initializer_mixin__)
|
31
26
|
builder = klass.send(:__initializer_builder__, Hash(config))
|
32
|
-
|
33
27
|
builder.call(mixin)
|
34
|
-
|
35
|
-
klass.
|
36
|
-
|
37
|
-
end
|
28
|
+
|
29
|
+
klass.include(InstanceDSL) # defines #initialize
|
30
|
+
klass.include(mixin) # defines #__initialize__ (to be redefined)
|
38
31
|
end
|
39
32
|
|
40
33
|
def mixin(fn = nil, &block)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Dry::Initializer
|
2
|
+
module InstanceDSL
|
3
|
+
private
|
4
|
+
|
5
|
+
# The method is reloaded explicitly
|
6
|
+
# in a class that extend [Dry::Initializer], or in its subclasses.
|
7
|
+
def initialize(*args)
|
8
|
+
__initialize__(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
# The method is redefined implicitly every time
|
12
|
+
# a `param` or `option` is invoked.
|
13
|
+
def __initialize__(*); end
|
14
|
+
end
|
15
|
+
end
|
data/spec/definition_spec.rb
CHANGED
@@ -2,13 +2,13 @@ describe "definition" do
|
|
2
2
|
shared_examples :initializer do |in_context|
|
3
3
|
subject { Test::Foo.new(1, bar: 2) }
|
4
4
|
|
5
|
-
it "sets variables when defined
|
5
|
+
it "sets variables when defined via `#{in_context}`" do
|
6
6
|
expect(subject.instance_variable_get(:@foo)).to eql 1
|
7
7
|
expect(subject.instance_variable_get(:@bar)).to eql 2
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
it_behaves_like :initializer, "
|
11
|
+
it_behaves_like :initializer, "extend Dry::Initializer" do
|
12
12
|
before do
|
13
13
|
class Test::Foo
|
14
14
|
extend Dry::Initializer
|
@@ -18,7 +18,7 @@ describe "definition" do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
it_behaves_like :initializer, "
|
21
|
+
it_behaves_like :initializer, "extend Dry::Initializer::Mixin" do
|
22
22
|
before do
|
23
23
|
class Test::Foo
|
24
24
|
extend Dry::Initializer::Mixin
|
@@ -28,7 +28,7 @@ describe "definition" do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
it_behaves_like :initializer, "
|
31
|
+
it_behaves_like :initializer, "extend Dry::Initializer[undefined: false]" do
|
32
32
|
before do
|
33
33
|
class Test::Foo
|
34
34
|
extend Dry::Initializer[undefined: false]
|
@@ -38,7 +38,7 @@ describe "definition" do
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
it_behaves_like :initializer, "
|
41
|
+
it_behaves_like :initializer, "include Dry::Initializer with block" do
|
42
42
|
before do
|
43
43
|
class Test::Foo
|
44
44
|
include Dry::Initializer.define {
|
@@ -49,7 +49,7 @@ describe "definition" do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
it_behaves_like :initializer, "
|
52
|
+
it_behaves_like :initializer, "include Dry::Initializer with lambda" do
|
53
53
|
before do
|
54
54
|
class Test::Foo
|
55
55
|
include Dry::Initializer.define -> do
|
@@ -60,7 +60,7 @@ describe "definition" do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
it_behaves_like :initializer, "
|
63
|
+
it_behaves_like :initializer, "include Dry::Initializer[undefined: false]" do
|
64
64
|
before do
|
65
65
|
class Test::Foo
|
66
66
|
include Dry::Initializer[undefined: false].define {
|
@@ -71,7 +71,7 @@ describe "definition" do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
it_behaves_like :initializer, "
|
74
|
+
it_behaves_like :initializer, "include Dry::Initializer::Mixin" do
|
75
75
|
before do
|
76
76
|
class Test::Foo
|
77
77
|
include Dry::Initializer::Mixin.define {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-initializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Kochnev (marshall-lee)
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-04-
|
12
|
+
date: 2017-04-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -102,10 +102,11 @@ files:
|
|
102
102
|
- lib/dry/initializer.rb
|
103
103
|
- lib/dry/initializer/attribute.rb
|
104
104
|
- lib/dry/initializer/builder.rb
|
105
|
-
- lib/dry/initializer/
|
105
|
+
- lib/dry/initializer/class_dsl.rb
|
106
106
|
- lib/dry/initializer/exceptions/default_value_error.rb
|
107
107
|
- lib/dry/initializer/exceptions/params_order_error.rb
|
108
108
|
- lib/dry/initializer/exceptions/type_constraint_error.rb
|
109
|
+
- lib/dry/initializer/instance_dsl.rb
|
109
110
|
- lib/dry/initializer/option.rb
|
110
111
|
- lib/dry/initializer/param.rb
|
111
112
|
- spec/custom_initializer_spec.rb
|