dry-initializer 2.4.0 → 2.5.0

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: 41bfe9bf29562e8ff2f907653002f1d1bae2e7bf
4
- data.tar.gz: de76e955208183a7e617367e553cfb97bfbfbf75
3
+ metadata.gz: 861264b64b414e7ff11f68071a530e3208093092
4
+ data.tar.gz: f3426ffd2670dbe47c276d67fd972e86fdeb9677
5
5
  SHA512:
6
- metadata.gz: c86812a57b0471dcee12d5ef97495036b350317eb8fea8044a2e85bfd21b68aa5f6f627b6bce7f882533c8fdc3137d52640493e966c195bbcd03d53e8861697a
7
- data.tar.gz: 726234048ec21a22da06de940bd25e3aae5ef0244b4489b238d856ba8a7992dab57af385fadf0a3f2553817257cf71cf56ed62ef688764507d54e66afd304e3b
6
+ metadata.gz: 3205f5f09066d20a3f05255a71ae8451ec6c00b0c6701bdf2fb4d8a854a61d49d5b1eea952d4cd08d05e3165e8748d73dd1e530a39a12d85bb90e5514bf6c37c
7
+ data.tar.gz: 05205f55be677d470f553ec0e9fcf8d357ffc3ba245c9195b144c24cac478dd3aa2e1e8d6bcbbd6fc1b6b04d92d8e3e8345762bc76838651dab26d90632a31d2
data/README.md CHANGED
@@ -70,11 +70,11 @@ See full documentation on the [Dry project official site][docs]
70
70
 
71
71
  ## Benchmarks
72
72
 
73
- The `dry-initializer` is pretty fast for rubies 2.2+ [comparing to other libraries][benchmarks].
73
+ The `dry-initializer` is pretty fast for rubies 2.3+ [comparing to other libraries][benchmarks].
74
74
 
75
75
  ## Compatibility
76
76
 
77
- Tested under rubies [compatible to MRI 2.2+](.travis.yml).
77
+ Tested under rubies [compatible to MRI 2.3+](.travis.yml).
78
78
 
79
79
  ## Contributing
80
80
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "2.4.0"
3
+ gem.version = "2.5.0"
4
4
  gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
5
5
  gem.email = "andrew.kozin@gmail.com"
6
6
  gem.homepage = "https://github.com/dryrb/dry-initializer"
@@ -16,5 +16,5 @@ Gem::Specification.new do |gem|
16
16
  gem.add_development_dependency "rspec", "~> 3.0"
17
17
  gem.add_development_dependency "rake", "> 10"
18
18
  gem.add_development_dependency "dry-types", "> 0.5.1"
19
- gem.add_development_dependency "rubocop", "~> 0.42"
19
+ gem.add_development_dependency "rubocop", "~> 0.49.0"
20
20
  end
@@ -27,8 +27,7 @@ module Dry
27
27
 
28
28
  # Adds or redefines a parameter of [#dry_initializer]
29
29
  # @param [Symbol] name
30
- # @param [#call, nil] coercer (nil)
31
- # @option opts [#call] :type
30
+ # @param [#call, nil] type (nil)
32
31
  # @option opts [Proc] :default
33
32
  # @option opts [Boolean] :optional
34
33
  # @option opts [Symbol] :as
@@ -60,22 +60,22 @@ module Dry::Initializer::Builders
60
60
 
61
61
  def default_line
62
62
  return unless @default
63
- "#{@val} = instance_exec(&#{@item}.default) if #{@val} == #{@null}"
63
+ "#{@val} = instance_exec(&#{@item}.default) if #{@null} == #{@val}"
64
64
  end
65
65
 
66
66
  def coercion_line
67
67
  return unless @type
68
68
  arity = @type.is_a?(Proc) ? @type.arity : @type.method(:call).arity
69
69
  if arity.abs == 1
70
- "#{@val} = #{@item}.type.call(#{@val}) unless #{@val} == #{@null}"
70
+ "#{@val} = #{@item}.type.call(#{@val}) unless #{@null} == #{@val}"
71
71
  else
72
- "#{@val} = #{@item}.type.call(#{@val}, self) unless #{@val} == #{@null}"
72
+ "#{@val} = #{@item}.type.call(#{@val}, self) unless #{@null} == #{@val}"
73
73
  end
74
74
  end
75
75
 
76
76
  def assignment_line
77
77
  "#{@ivar} = #{@val}" \
78
- " unless #{@val} == #{@null} && instance_variable_defined?(:#{@ivar})"
78
+ " unless #{@null} == #{@val} && instance_variable_defined?(:#{@ivar})"
79
79
  end
80
80
  end
81
81
  end
@@ -38,7 +38,7 @@ module Dry::Initializer::Builders
38
38
  return unless @null
39
39
  [
40
40
  "def #{@target}",
41
- " #{@ivar} unless #{@ivar} == Dry::Initializer::UNDEFINED",
41
+ " #{@ivar} unless Dry::Initializer::UNDEFINED == #{@ivar}",
42
42
  "end"
43
43
  ]
44
44
  end
@@ -51,8 +51,7 @@ module Dry::Initializer
51
51
 
52
52
  # Adds or redefines a parameter
53
53
  # @param [Symbol] name
54
- # @param [#call, nil] coercer (nil)
55
- # @option opts [#call] :type
54
+ # @param [#call, nil] type (nil)
56
55
  # @option opts [Proc] :default
57
56
  # @option opts [Boolean] :optional
58
57
  # @option opts [Symbol] :as
@@ -80,7 +79,7 @@ module Dry::Initializer
80
79
  key = item.target
81
80
  next unless instance.respond_to? key
82
81
  val = instance.send(key)
83
- obj[key] = val unless val == null
82
+ obj[key] = val unless null == val
84
83
  end
85
84
  end
86
85
 
@@ -91,7 +90,7 @@ module Dry::Initializer
91
90
  definitions.values.each_with_object({}) do |item, obj|
92
91
  key = item.target
93
92
  val = instance.send(:instance_variable_get, item.ivar)
94
- obj[key] = val unless val == null
93
+ obj[key] = val unless null == val
95
94
  end
96
95
  end
97
96
 
@@ -0,0 +1,25 @@
1
+ describe "coercion of nil" do
2
+ before do
3
+ class Test::Foo
4
+ extend Dry::Initializer
5
+ param :bar, proc(&:to_i)
6
+ end
7
+
8
+ class Test::Baz
9
+ include Dry::Initializer.define -> do
10
+ param :qux, proc(&:to_i)
11
+ end
12
+ end
13
+ end
14
+
15
+ let(:foo) { Test::Foo.new(nil) }
16
+ let(:baz) { Test::Baz.new(nil) }
17
+
18
+ it "works with extend syntax" do
19
+ expect(foo.bar).to eq 0
20
+ end
21
+
22
+ it "works with include syntax" do
23
+ expect(baz.qux).to eq 0
24
+ end
25
+ end
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: 2.4.0
4
+ version: 2.5.0
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: 2018-02-02 00:00:00.000000000 Z
12
+ date: 2018-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0.42'
62
+ version: 0.49.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0.42'
69
+ version: 0.49.0
70
70
  description:
71
71
  email: andrew.kozin@gmail.com
72
72
  executables: []
@@ -110,6 +110,7 @@ files:
110
110
  - lib/tasks/benchmark.rake
111
111
  - lib/tasks/profile.rake
112
112
  - spec/attributes_spec.rb
113
+ - spec/coercion_of_nil_spec.rb
113
114
  - spec/custom_dispatchers_spec.rb
114
115
  - spec/custom_initializer_spec.rb
115
116
  - spec/default_values_spec.rb
@@ -153,6 +154,7 @@ specification_version: 4
153
154
  summary: DSL for declaring params and options of the initializer
154
155
  test_files:
155
156
  - spec/attributes_spec.rb
157
+ - spec/coercion_of_nil_spec.rb
156
158
  - spec/custom_dispatchers_spec.rb
157
159
  - spec/custom_initializer_spec.rb
158
160
  - spec/default_values_spec.rb