dry-validation 1.2.0 → 1.2.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
  SHA256:
3
- metadata.gz: aadb0a6e283c3de0438b2ddf7335262e276c206021e95f4aaa7eb70be040f268
4
- data.tar.gz: e2c9949f4f69ded243970367602b997c8eba80c5d18b223f7f14d30d914b4886
3
+ metadata.gz: c16031447235e4a737bb2fd2c406017b6bc082415ade63f8fe4d364c9b720be1
4
+ data.tar.gz: 10d0e6aaddeb0df982894c95e305eef3c6f05bbc3ac2cf229b9926f0acfe791f
5
5
  SHA512:
6
- metadata.gz: 7cd158435b3998c6864a594d61315760b974a4b8d8a8728bdff42cc3684209416a23a154e0efe9537ab54839f96819b4b11f434104b2ba5b2be6dd4fce4c39b5
7
- data.tar.gz: d796476595c68a33dca5cf26cb11f3aff0c3fc2be73165f5693bb9b62c94c02a917ff8f559cc62055909805d95928dc96189e8a1391657177a21674ab15b58f5
6
+ metadata.gz: a0363485af3db4081d46ea89ad5f1918c557d2b38b9ec357640bb1feb1eec3c6fbc4cd5a8ff5650f830bcf3440abe7d4f7e570377fad8fc803fd0ccc9d91ce49
7
+ data.tar.gz: 7a89b67fe79eb7a8e3a63b939b33af67a13b89ad005d2d334c3d3db626bd960e19a957b25508239358bcb634deaeb116e91fab1878b393c3b106f6a028f96a8d
@@ -1,3 +1,14 @@
1
+ # v1.2.1 2019-07-16
2
+
3
+ ### Fixed
4
+
5
+ * Defining an abstract contract class that has no schema no longer crashes (issue #565) (@solnic)
6
+ * Fixed an issue where `Rule#each` would crash when the value is not an array (issue #567) (@solnic)
7
+ * Fixed an issue where guarding a rule would crash when keys are missing in the input (issue #569) (@solnic)
8
+ * Added missing "pathname" require (issue #570) (@solnic)
9
+
10
+ [Compare v1.2.0...v1.2.1](https://github.com/dry-rb/dry-validation/compare/v1.2.0...v1.2.1)
11
+
1
12
  # v1.2.0 2019-07-08
2
13
 
3
14
  ### Added
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'pathname'
3
4
  require 'dry/core/constants'
4
5
 
5
6
  module Dry
@@ -128,7 +128,9 @@ module Dry
128
128
 
129
129
  return false unless result.error?(curr_path)
130
130
 
131
- result.errors.any? { |err| Schema::Path[err.path] == curr_path }
131
+ result.errors.any? { |err|
132
+ (other = Schema::Path[err.path]).same_root?(curr_path) && other == curr_path
133
+ }
132
134
  }
133
135
  end
134
136
 
@@ -101,7 +101,7 @@ module Dry
101
101
  #
102
102
  # @api public
103
103
  def rule(*keys, &block)
104
- ensure_valid_keys(*keys)
104
+ ensure_valid_keys(*keys) if __schema__
105
105
 
106
106
  Rule.new(keys: keys, block: block).tap do |rule|
107
107
  rules << rule
@@ -106,6 +106,22 @@ module Dry
106
106
  schema_result.error?(key)
107
107
  end
108
108
 
109
+ # Check if there's any error for the provided key
110
+ #
111
+ # This does not consider errors from the nested values
112
+ #
113
+ # @api private
114
+ def base_error?(key)
115
+ schema_result.errors.any? { |error|
116
+ key_path = Schema::Path[key]
117
+ err_path = Schema::Path[error.path]
118
+
119
+ return false unless key_path.same_root?(err_path)
120
+
121
+ key_path == err_path
122
+ }
123
+ end
124
+
109
125
  # Add a new error for the provided key
110
126
  #
111
127
  # @api private
@@ -82,14 +82,16 @@ module Dry
82
82
  @keys = []
83
83
 
84
84
  @block = proc do
85
- (values[root] || []).each_with_index do |_, idx|
86
- path = [*Schema::Path[root].to_a, idx]
85
+ unless result.base_error?(root) || !values.key?(root)
86
+ values[root].each_with_index do |_, idx|
87
+ path = [*Schema::Path[root].to_a, idx]
87
88
 
88
- next if result.error?(path)
89
+ next if result.error?(path)
89
90
 
90
- evaluator = with(macros: macros, keys: [path], &block)
91
+ evaluator = with(macros: macros, keys: [path], &block)
91
92
 
92
- failures.concat(evaluator.failures)
93
+ failures.concat(evaluator.failures)
94
+ end
93
95
  end
94
96
  end
95
97
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Validation
5
- VERSION = '1.2.0'
5
+ VERSION = '1.2.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-08 00:00:00.000000000 Z
11
+ date: 2019-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby