dry-initializer 0.1.1 → 0.2.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -9
  3. data/CHANGELOG.md +72 -3
  4. data/LICENSE.txt +1 -1
  5. data/README.md +7 -279
  6. data/benchmarks/with_types.rb +2 -0
  7. data/benchmarks/with_types_and_defaults.rb +2 -0
  8. data/dry-initializer.gemspec +1 -1
  9. data/lib/dry/initializer.rb +5 -4
  10. data/lib/dry/initializer/builder.rb +66 -13
  11. data/lib/dry/initializer/errors.rb +5 -7
  12. data/lib/dry/initializer/errors/default_value_error.rb +6 -0
  13. data/lib/dry/initializer/errors/order_error.rb +7 -0
  14. data/lib/dry/initializer/errors/plugin_error.rb +6 -0
  15. data/lib/dry/initializer/errors/{existing_argument_error.rb → redefinition_error.rb} +1 -1
  16. data/lib/dry/initializer/errors/type_constraint_error.rb +6 -0
  17. data/lib/dry/initializer/errors/type_error.rb +4 -3
  18. data/lib/dry/initializer/mixin.rb +7 -7
  19. data/lib/dry/initializer/plugins.rb +10 -0
  20. data/lib/dry/initializer/plugins/base.rb +42 -0
  21. data/lib/dry/initializer/plugins/default_proc.rb +28 -0
  22. data/lib/dry/initializer/plugins/signature.rb +35 -0
  23. data/lib/dry/initializer/plugins/type_constraint.rb +58 -0
  24. data/lib/dry/initializer/plugins/variable_setter.rb +12 -0
  25. data/lib/dry/initializer/signature.rb +47 -0
  26. data/spec/dry/container_spec.rb +3 -3
  27. data/spec/dry/dry_type_constraint_spec.rb +30 -0
  28. data/spec/dry/invalid_default_spec.rb +1 -1
  29. data/spec/dry/{proc_type_spec.rb → object_type_constraint_spec.rb} +4 -4
  30. data/spec/dry/{poro_type_spec.rb → plain_type_constraint_spec.rb} +1 -1
  31. data/spec/dry/value_coercion_via_dry_types_spec.rb +21 -0
  32. metadata +29 -25
  33. data/lib/dry/initializer/argument.rb +0 -96
  34. data/lib/dry/initializer/arguments.rb +0 -85
  35. data/lib/dry/initializer/errors/invalid_default_value_error.rb +0 -6
  36. data/lib/dry/initializer/errors/invalid_type_error.rb +0 -6
  37. data/lib/dry/initializer/errors/key_error.rb +0 -5
  38. data/lib/dry/initializer/errors/missed_default_value_error.rb +0 -5
  39. data/spec/dry/dry_type_spec.rb +0 -25
  40. data/spec/dry/invalid_type_spec.rb +0 -13
@@ -1,6 +0,0 @@
1
- class Dry::Initializer::Errors::InvalidDefaultValueError < SyntaxError
2
- def initialize(value)
3
- super "#{value.inspect} is set directly as a default value." \
4
- " Wrap it to either proc or lambda."
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- class Dry::Initializer::Errors::InvalidTypeError < ::TypeError
2
- def initialize(type)
3
- super "#{type.inspect} doesn't describe a valid type." \
4
- " Use either a module/class, or an object responding to #call."
5
- end
6
- end
@@ -1,5 +0,0 @@
1
- class Dry::Initializer::Errors::KeyError < ::KeyError
2
- def initialize(*keys)
3
- super "Unrecognized keys: #{keys.join(", ")}."
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class Dry::Initializer::Errors::MissedDefaultValueError < SyntaxError
2
- def initialize(name)
3
- super "You should set a default value for the '#{name}'."
4
- end
5
- end
@@ -1,25 +0,0 @@
1
- describe "Dry type" do
2
- before do
3
- class Test::Foo
4
- extend Dry::Initializer::Mixin
5
-
6
- param :foo, type: Dry::Types::Coercible::String
7
- end
8
- end
9
-
10
- pending context "in case of mismatch" do
11
- subject { Test::Foo.new :foo }
12
-
13
- it "raises TypeError" do
14
- expect { subject }.to raise_error TypeError, /:foo/
15
- end
16
- end
17
-
18
- pending context "in case of match" do
19
- subject { Test::Foo.new "foo" }
20
-
21
- it "completes the initialization" do
22
- expect { subject }.not_to raise_error
23
- end
24
- end
25
- end
@@ -1,13 +0,0 @@
1
- describe "invalid type declaration" do
2
- subject do
3
- class Test::Foo
4
- extend Dry::Initializer::Mixin
5
-
6
- param :foo, type: 1
7
- end
8
- end
9
-
10
- it "raises TypeError" do
11
- expect { subject }.to raise_error TypeError, /1/
12
- end
13
- end