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 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