dry-initializer 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +10 -21
  3. data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +10 -0
  4. data/.github/ISSUE_TEMPLATE/---bug-report.md +34 -0
  5. data/.github/ISSUE_TEMPLATE/---feature-request.md +18 -0
  6. data/.github/workflows/custom_ci.yml +74 -0
  7. data/.github/workflows/docsite.yml +34 -0
  8. data/.github/workflows/sync_configs.yml +34 -0
  9. data/.gitignore +2 -0
  10. data/.rspec +2 -2
  11. data/.rubocop.yml +65 -27
  12. data/CHANGELOG.md +10 -3
  13. data/CODE_OF_CONDUCT.md +13 -0
  14. data/CONTRIBUTING.md +29 -0
  15. data/Gemfile +26 -17
  16. data/LICENSE +20 -0
  17. data/README.md +11 -12
  18. data/docsite/source/attributes.html.md +106 -0
  19. data/docsite/source/container-version.html.md +39 -0
  20. data/docsite/source/index.html.md +43 -0
  21. data/docsite/source/inheritance.html.md +43 -0
  22. data/docsite/source/optionals-and-defaults.html.md +130 -0
  23. data/docsite/source/options-tolerance.html.md +27 -0
  24. data/docsite/source/params-and-options.html.md +74 -0
  25. data/docsite/source/rails-support.html.md +101 -0
  26. data/docsite/source/readers.html.md +43 -0
  27. data/docsite/source/skip-undefined.html.md +59 -0
  28. data/docsite/source/type-constraints.html.md +160 -0
  29. data/dry-initializer.gemspec +1 -1
  30. data/lib/dry/initializer/config.rb +5 -5
  31. data/lib/dry/initializer/dispatchers.rb +2 -2
  32. data/lib/dry/initializer/mixin/root.rb +1 -0
  33. data/lib/dry/initializer/struct.rb +2 -3
  34. data/spec/nested_type_spec.rb +4 -0
  35. data/spec/spec_helper.rb +7 -0
  36. data/spec/type_argument_spec.rb +2 -2
  37. data/spec/type_constraint_spec.rb +1 -1
  38. data/spec/value_coercion_via_dry_types_spec.rb +1 -1
  39. metadata +24 -4
  40. data/.travis.yml +0 -28
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "3.0.1"
3
+ gem.version = "3.0.2"
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/dry-rb/dry-initializer"
@@ -58,7 +58,7 @@ module Dry::Initializer
58
58
  # @option opts [true, false, :protected, :public, :private] :reader
59
59
  # @return [self] itself
60
60
  def param(name, type = nil, **opts, &block)
61
- add_definition(false, name, type, block, opts)
61
+ add_definition(false, name, type, block, **opts)
62
62
  end
63
63
 
64
64
  # Adds or redefines an option of [#dry_initializer]
@@ -68,7 +68,7 @@ module Dry::Initializer
68
68
  # @return (see #param)
69
69
  #
70
70
  def option(name, type = nil, **opts, &block)
71
- add_definition(true, name, type, block, opts)
71
+ add_definition(true, name, type, block, **opts)
72
72
  end
73
73
 
74
74
  # The hash of public attributes for an instance of the [#extended_class]
@@ -142,11 +142,11 @@ module Dry::Initializer
142
142
  source: name,
143
143
  type: type,
144
144
  block: block,
145
- **opts,
145
+ **opts
146
146
  }
147
147
 
148
- options = Dispatchers.call(opts)
149
- definition = Definition.new(options)
148
+ options = Dispatchers.call(**opts)
149
+ definition = Definition.new(**options)
150
150
  definitions[definition.source] = definition
151
151
  finalize
152
152
  mixin.class_eval definition.code
@@ -85,8 +85,8 @@ module Dry::Initializer::Dispatchers
85
85
  # @return [Hash<Symbol, Objct>] normalized set of options
86
86
  #
87
87
  def call(**options)
88
- options = { null: null }.merge(options)
89
- pipeline.reduce(options) { |opts, dispatcher| dispatcher.call(opts) }
88
+ options = { null: null, **options }
89
+ pipeline.reduce(options) { |opts, dispatcher| dispatcher.call(**opts) }
90
90
  end
91
91
 
92
92
  private
@@ -6,5 +6,6 @@ module Dry::Initializer::Mixin
6
6
  def initialize(*args)
7
7
  __dry_initializer_initialize__(*args)
8
8
  end
9
+ ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
9
10
  end
10
11
  end
@@ -8,7 +8,7 @@ class Dry::Initializer::Struct
8
8
  undef_method :param
9
9
 
10
10
  def new(options)
11
- super Hash(options).transform_keys(&:to_sym)
11
+ super(**Hash(options).each_with_object({}) { |(k, v), h| h[k.to_sym] = v })
12
12
  end
13
13
  alias call new
14
14
  end
@@ -22,8 +22,7 @@ class Dry::Initializer::Struct
22
22
  .class
23
23
  .dry_initializer
24
24
  .attributes(self)
25
- .transform_values { |v| __hashify(v) }
26
- .stringify_keys
25
+ .each_with_object({}) { |(k, v), h| h[k.to_s] = __hashify(v) }
27
26
  end
28
27
 
29
28
  private
@@ -18,6 +18,10 @@ describe "nested type argument" do
18
18
  it "builds the type" do
19
19
  expect(subject.x.y.z).to eq "42"
20
20
  end
21
+
22
+ it "converts the nested type to hash" do
23
+ expect(subject.x.to_h).to eq("y" => { "z" => "42" })
24
+ end
21
25
  end
22
26
 
23
27
  context "with nested and wrapped definitions" do
@@ -1,3 +1,10 @@
1
+ if ENV['COVERAGE'] == 'true'
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter '/spec/'
5
+ end
6
+ end
7
+
1
8
  require "dry/initializer"
2
9
 
3
10
  begin
@@ -13,7 +13,7 @@ describe "type argument" do
13
13
  subject { Test::Foo.new 1, bar: "2" }
14
14
 
15
15
  it "raises TypeError" do
16
- expect { subject }.to raise_error TypeError, /1/
16
+ expect { subject }.to raise_error Dry::Types::ConstraintError, /1/
17
17
  end
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ describe "type argument" do
21
21
  subject { Test::Foo.new "1", bar: 2 }
22
22
 
23
23
  it "raises TypeError" do
24
- expect { subject }.to raise_error TypeError, /2/
24
+ expect { subject }.to raise_error Dry::Types::ConstraintError, /2/
25
25
  end
26
26
  end
27
27
 
@@ -43,7 +43,7 @@ describe "type constraint" do
43
43
  subject { Test::Foo.new 1 }
44
44
 
45
45
  it "raises ArgumentError" do
46
- expect { subject }.to raise_error TypeError, /1/
46
+ expect { subject }.to raise_error Dry::Types::ConstraintError, /1/
47
47
  end
48
48
  end
49
49
 
@@ -3,7 +3,7 @@ require "dry-types"
3
3
  describe "value coercion via dry-types" do
4
4
  before do
5
5
  module Test::Types
6
- include Dry::Types.module
6
+ include Dry.Types
7
7
  end
8
8
 
9
9
  class Test::Foo
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: 3.0.1
4
+ version: 3.0.2
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: 2019-04-15 00:00:00.000000000 Z
12
+ date: 2019-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -73,16 +73,25 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files:
75
75
  - README.md
76
+ - LICENSE
76
77
  - CHANGELOG.md
77
78
  files:
78
79
  - ".codeclimate.yml"
80
+ - ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
81
+ - ".github/ISSUE_TEMPLATE/---bug-report.md"
82
+ - ".github/ISSUE_TEMPLATE/---feature-request.md"
83
+ - ".github/workflows/custom_ci.yml"
84
+ - ".github/workflows/docsite.yml"
85
+ - ".github/workflows/sync_configs.yml"
79
86
  - ".gitignore"
80
87
  - ".rspec"
81
88
  - ".rubocop.yml"
82
- - ".travis.yml"
83
89
  - CHANGELOG.md
90
+ - CODE_OF_CONDUCT.md
91
+ - CONTRIBUTING.md
84
92
  - Gemfile
85
93
  - Guardfile
94
+ - LICENSE
86
95
  - LICENSE.txt
87
96
  - README.md
88
97
  - Rakefile
@@ -92,6 +101,17 @@ files:
92
101
  - benchmarks/with_coercion.rb
93
102
  - benchmarks/with_defaults.rb
94
103
  - benchmarks/with_defaults_and_coercion.rb
104
+ - docsite/source/attributes.html.md
105
+ - docsite/source/container-version.html.md
106
+ - docsite/source/index.html.md
107
+ - docsite/source/inheritance.html.md
108
+ - docsite/source/optionals-and-defaults.html.md
109
+ - docsite/source/options-tolerance.html.md
110
+ - docsite/source/params-and-options.html.md
111
+ - docsite/source/rails-support.html.md
112
+ - docsite/source/readers.html.md
113
+ - docsite/source/skip-undefined.html.md
114
+ - docsite/source/type-constraints.html.md
95
115
  - dry-initializer.gemspec
96
116
  - lib/dry-initializer.rb
97
117
  - lib/dry/initializer.rb
@@ -161,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
181
  - !ruby/object:Gem::Version
162
182
  version: '0'
163
183
  requirements: []
164
- rubygems_version: 3.0.3
184
+ rubygems_version: 3.0.6
165
185
  signing_key:
166
186
  specification_version: 4
167
187
  summary: DSL for declaring params and options of the initializer
@@ -1,28 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- bundler_args: --without benchmarks tools
5
- script:
6
- - bundle exec rake spec
7
- rvm:
8
- - 2.3.8
9
- - 2.4.6
10
- - 2.5.5
11
- - 2.6.2
12
- - jruby-9.2.7.0
13
- - jruby-9000
14
- - rbx-3
15
- - ruby-head
16
- - truffleruby
17
- env:
18
- global:
19
- - JRUBY_OPTS='--dev -J-Xmx1024M'
20
- matrix:
21
- allow_failures:
22
- - rvm: rbx-3
23
- - rvm: ruby-head
24
- - rvm: jruby-head
25
- - rvm: truffleruby
26
- include:
27
- - rvm: jruby-head
28
- before_install: gem install bundler --no-document