dry-initializer 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e6ae766c1972fc5888ab780a91efb1e819b328a
4
- data.tar.gz: 6810b441c5758b0fee5efadda4616b2b67d8c6d8
3
+ metadata.gz: 6ceae8e2fd7db0c6573d23b4fc02b3a28c87899b
4
+ data.tar.gz: a9535d4a290c5d1fff4172d0a3189e657c408a0a
5
5
  SHA512:
6
- metadata.gz: 6e3e5809a583a299986ed3624d5baa905816bd518d20bb0a5870a9efdda9ddf41388c239a9d5aab6e1027adfbe1abacaa643d2075e1f202d3f1a0b20f5b305d6
7
- data.tar.gz: f6f9c2dd66ed22efc7e53677256b884082dc86a3fac923dd35dc7fbd480252ce8f0f800665d9e49520c803cd541c44120832ec888f63e0203866f90faef4dd1d
6
+ metadata.gz: c09a05a65e40b00ad7b1e31fa3bdc0f0960b36cd1a8fca69826ba9ed706e8c16861a627fe12229f86282aa044d7f1aec77bc7b0fd630d6d7daf7e8d15b8bd208
7
+ data.tar.gz: 9e956de0414155a0b0350a93641925bc972992aa4f0344bc841cc1c808f7b35129c2844cff14205d05fba6f3045bb8c4b99469ff4fe0450593fb388a261999c8
data/.rspec CHANGED
@@ -1,3 +1,4 @@
1
1
  --format documentation
2
2
  --color
3
3
  --require spec_helper
4
+ --warnings
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)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "1.4.0"
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"
@@ -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/dsl"
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::DSL
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 do
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 DSL
2
+ module ClassDSL
3
3
  attr_reader :config
4
4
 
5
5
  def [](**settings)
6
6
  Module.new do
7
- extend Dry::Initializer::DSL
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 = Module.new do
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
- klass.include(mixin)
35
- klass.send(:define_method, :initialize) do |*args|
36
- __initialize__(*args)
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
@@ -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 by #{in_context}" do
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, "extending Dry::Initializer" do
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, "extending Dry::Initializer::Mixin" do
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, "extending Dry::Initializer[undefined: false]" do
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, "including Dry::Initializer with block" do
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, "including Dry::Initializer with lambda" do
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, "including Dry::Initializer[undefined: false]" do
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, "including Dry::Initializer::Mixin" do
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.0
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-02 00:00:00.000000000 Z
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/dsl.rb
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