dry-mutations 0.11.1 → 0.99.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: 9346b654bae4273294f8c7ee18f0fdd0c9d7be56
4
- data.tar.gz: 578fb14621e715e8b3a36941d685295e36159fc0
3
+ metadata.gz: 3283bff6b56af17bcf225925ddf1f408fa7b4c68
4
+ data.tar.gz: a570341fa4d2a15633a09db13a7a5fe24129c273
5
5
  SHA512:
6
- metadata.gz: 1208949dedcb0550201668e796f544f757adfad8223c2c5b457938000ad82577d2ecf3abbf6a096278e996cbb7ba1ce123d5e3ebff377f4e707f13acbc2cc5c8
7
- data.tar.gz: 7300929b9559be9476b5c4ffdb9f7d06e23dcc22c706d690c439470daf5b72889dec31bae64dcbe0d692002050bc6727c1333ceeaf14b0140ad6e227d6eaf4fc
6
+ metadata.gz: 228250b33066d8c6bac1b8a7319bbf95619243aa0a070b350faf6db34962df2926e3194d58e92f17c27c7932cea3d7fd15db8ca48056c9bdc28e53114de45499
7
+ data.tar.gz: a6ffb1ffab92b3a109959806c2e1a2e70cdac4b85b9a46dea86bb934141c7eac04d3b855e9980b815a9b9c21b191db4be4c6d3d93ecb9dd77b1f103474ed236c
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.1.1
4
4
  - 2.1.8
5
- - 2.2.0
5
+ - 2.2.2
6
6
  before_install: gem install bundler -v 1.10.6
7
7
  addons:
8
8
  code_climate:
data/config/messages.yml CHANGED
@@ -3,3 +3,4 @@ en:
3
3
  duck?: 'must respond to %{expected}'
4
4
  model?: 'must be a model (instance of %{expected})'
5
5
  discard_empty: 'aleksei’s too dumb error (%{expected},) you won :-P'
6
+ default?: 'default value implementation sucks'
@@ -35,7 +35,7 @@ module Dry
35
35
  attr_reader :validation
36
36
 
37
37
  def initialize(*args)
38
- @raw_inputs = Utils.RawInputs(*args)
38
+ @raw_inputs = defaults.merge Utils.RawInputs(*args)
39
39
 
40
40
  @validation_result = discard_empty!
41
41
 
@@ -130,6 +130,39 @@ module Dry
130
130
  def schema
131
131
  @schema ||= self.class.schema
132
132
  end
133
+
134
+ def predicates(input, digged = [])
135
+ case input
136
+ when Dry::Logic::Rule::Predicate then digged << input
137
+ when Array then input.each { |e| predicates(e, digged) }
138
+ when ->(i) { i.respond_to?(:rules) }
139
+ predicates(input.rules, digged)
140
+ end
141
+ digged
142
+ end
143
+
144
+ def dig(predicate, input = schema)
145
+ case input.rules
146
+ when Hash # the whole schema
147
+ input.rules.map do |k, v|
148
+ pred = predicates(v).detect do |p|
149
+ p.respond_to?(:predicate) && (p = p.predicate).is_a?(Method) && "#{p.owner}##{p.name}" == predicate
150
+ end
151
+ pred ? [k, pred] : nil
152
+ end.compact.to_h
153
+ else
154
+ predicates(input).detect { |p| "#{p.owner}##{p.name}" == predicate }
155
+ end
156
+ end
157
+
158
+ def defaults
159
+ ::Dry::Mutations::Utils.Hash(
160
+ dig('#<Class:Dry::Mutations::Predicates>#default?').map do |k, v|
161
+ next unless v.respond_to?(:options) && v.options[:args]
162
+ [k, v.options[:args].first]
163
+ end.compact.to_h
164
+ )
165
+ end
133
166
  end
134
167
  end
135
168
  end
@@ -8,7 +8,8 @@ module Dry
8
8
  end
9
9
 
10
10
  predicate(:default?) do |_expected, _current|
11
- fail Errors::TypeError, "“default” guard is not implemented yet in dry-mutations, sorry for that."
11
+ true
12
+ # fail Errors::TypeError, "“default” guard is not implemented yet in dry-mutations, sorry for that."
12
13
  end
13
14
 
14
15
  # FIXME: at the moment this is an exact equivalent of :type? => User
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Mutations
3
- VERSION = '0.11.1'.freeze
3
+ VERSION = '0.99.0'.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.1
4
+ version: 0.99.0
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-26 00:00:00.000000000 Z
11
+ date: 2016-12-15 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.6
393
+ rubygems_version: 2.4.8
394
394
  signing_key:
395
395
  specification_version: 4
396
396
  summary: Mutations gem interface implemented with `dry-rb`’s validation schemas.