dry-initializer 0.1.1 → 0.2.0

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