dry-mutations 0.11.0 → 0.11.1

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: 777dcd71e9799d0d49a7e695a55402cab042f047
4
- data.tar.gz: 77defc333baf157827bbec9ffd92a8bd3f53585e
3
+ metadata.gz: 9346b654bae4273294f8c7ee18f0fdd0c9d7be56
4
+ data.tar.gz: 578fb14621e715e8b3a36941d685295e36159fc0
5
5
  SHA512:
6
- metadata.gz: c13d02d970d8222ff4a8f61591124da209bb52249d66457179bb875aa69204b7aae30fde975836f13b420b6e322689964ece718ebc90b7b14a345ac46d496a96
7
- data.tar.gz: 8eee17f91a8c1e31546306bf6ba9bb420b62fe2bd28c18d5686eb9829a37f87dad3e354754e25623fa727308b0170980041ce9802a6ee8783670f8d0ddc8dbf9
6
+ metadata.gz: 1208949dedcb0550201668e796f544f757adfad8223c2c5b457938000ad82577d2ecf3abbf6a096278e996cbb7ba1ce123d5e3ebff377f4e707f13acbc2cc5c8
7
+ data.tar.gz: 7300929b9559be9476b5c4ffdb9f7d06e23dcc22c706d690c439470daf5b72889dec31bae64dcbe0d692002050bc6727c1333ceeaf14b0140ad6e227d6eaf4fc
data/README.md CHANGED
@@ -162,7 +162,53 @@ required do
162
162
  end
163
163
  ```
164
164
 
165
- ## Dealing `outcome`
165
+ ## Combining dry schemas with mutation-like syntax
166
+
167
+ Since version `0.11.1`, one might pass the instance of `Dry::Validation::Schema`
168
+ and/or `Dry::Validation::Form` instance to `schema` mutation DSL. Such a block
169
+ might be _only one_, and it _must be_ the first DSL in the mutation:
170
+
171
+ ### Correct
172
+
173
+ ```ruby
174
+ Class.new(::Mutations::Command) do
175
+ prepend ::Dry::Mutations::Extensions::Command
176
+ prepend ::Dry::Mutations::Extensions::Sieve
177
+
178
+ schema(::Dry::Validation.Form do
179
+ required(:integer_value).filled(:int?, gt?: 0)
180
+ required(:date_value).filled(:date?)
181
+ required(:bool_value).filled(:bool?)
182
+ end)
183
+
184
+ required do
185
+ integer :forty_two
186
+ string :hello
187
+ end
188
+ end
189
+ ```
190
+
191
+ ### Incorrect
192
+
193
+ ```ruby
194
+ Class.new(::Mutations::Command) do
195
+ prepend ::Dry::Mutations::Extensions::Command
196
+ prepend ::Dry::Mutations::Extensions::Sieve
197
+
198
+ required do
199
+ integer :forty_two
200
+ string :hello
201
+ end
202
+
203
+ schema(::Dry::Validation.Form do
204
+ required(:integer_value).filled(:int?, gt?: 0)
205
+ required(:date_value).filled(:date?)
206
+ required(:bool_value).filled(:bool?)
207
+ end)
208
+ end
209
+ ```
210
+
211
+ ## Dealing with `outcome`
166
212
 
167
213
  ### Command
168
214
 
@@ -3,7 +3,7 @@ module Dry
3
3
  module DSL # :nodoc:
4
4
  module Schema # :nodoc:
5
5
  def schema schema = nil, input_processor: nil, **options, &block
6
- @schema ||= schema || derived_schema(input_processor: input_processor, **options, &block)
6
+ @schema ||= patched_schema(schema) || derived_schema(input_processor: input_processor, **options, &block)
7
7
  return @schema unless block_given?
8
8
 
9
9
  @schema = Validation.Schema(@schema, **@schema.options, &Proc.new)
@@ -25,6 +25,13 @@ module Dry
25
25
  ::Dry::Mutations.Schema(input_processor: input_processor, **options, &block)
26
26
  end
27
27
  end
28
+
29
+ def patched_schema(schema)
30
+ return nil unless schema.is_a?(::Dry::Validation::Schema)
31
+ schema.tap do |s|
32
+ s.config.instance_eval(&::Dry::Mutations::Schema::CONFIGURATOR)
33
+ end
34
+ end
28
35
  end
29
36
  end
30
37
  end
@@ -4,17 +4,18 @@ module Dry
4
4
  @@discarded = []
5
5
 
6
6
  MESSAGES_FILE = (::File.join __dir__, '..', '..', '..', 'config', 'messages.yml').freeze
7
-
8
- configure do |config|
7
+ CONFIGURATOR = ->(config) do
9
8
  config.messages_file = MESSAGES_FILE
10
9
  config.hash_type = :symbolized
11
- config.input_processor = :sanitizer
12
-
13
- config.instance_variable_set :@discarded, []
14
-
15
- predicates(::Dry::Mutations::Predicates)
10
+ config.input_processor = :sanitizer if config.input_processor == :noop
11
+ config.predicates = ::Dry::Mutations::Predicates
12
+ this = is_a?(::Dry::Validation::Schema) ? self : singleton_class
13
+ config.registry = ::Dry::Validation::PredicateRegistry[this, config.predicates]
16
14
  end
17
15
 
16
+ configure(&CONFIGURATOR)
17
+ # predicates(::Dry::Mutations::Predicates)
18
+
18
19
  def discarded
19
20
  @@discarded
20
21
  end
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Mutations
3
- VERSION = '0.11.0'.freeze
3
+ VERSION = '0.11.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-mutations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksei Matiushkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-25 00:00:00.000000000 Z
11
+ date: 2016-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -390,7 +390,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
390
390
  version: '0'
391
391
  requirements: []
392
392
  rubyforge_project:
393
- rubygems_version: 2.4.8
393
+ rubygems_version: 2.4.6
394
394
  signing_key:
395
395
  specification_version: 4
396
396
  summary: Mutations gem interface implemented with `dry-rb`’s validation schemas.