dry-validation 1.2.0 → 1.2.1

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