dry-schema 1.13.0 → 1.13.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/LICENSE +1 -1
- data/README.md +2 -2
- data/dry-schema.gemspec +2 -2
- data/lib/dry/schema/dsl.rb +2 -2
- data/lib/dry/schema/macros/dsl.rb +8 -4
- data/lib/dry/schema/macros/key.rb +0 -1
- data/lib/dry/schema/messages/yaml.rb +1 -1
- data/lib/dry/schema/result.rb +2 -0
- data/lib/dry/schema/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1949729f55d95db1df478e3d2bf0077728c2cfaa5a66ac3d6d00bdbaaf55347
|
4
|
+
data.tar.gz: 574d9ebd59457187c161730f8b2f232d299ff813fb6af10c680b57ce17c5ee46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 520e01dc0ab8454bb981fcba032d3a1099fb7fad15b7eaf4008a094fae381178ab389b143a83b2f9f46522722aa14498bcf9a85e9708537d773a3b8f07c81635
|
7
|
+
data.tar.gz: 6d3c13d9d1c13dd632368fd4a3ff34aaa8fec5573a5001540552eadd3debe413160d54bbc8051822deb029c9bf20ffe301a120dbd97f2a569eac398de767053e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## 1.13.1 2023-04-07
|
4
|
+
|
5
|
+
|
6
|
+
### Fixed
|
7
|
+
|
8
|
+
- Support sum types of hashes (issue #446 fixed via #457) (@segiddins)
|
9
|
+
|
10
|
+
|
11
|
+
[Compare v1.13.0...v1.13.1](https://github.com/dry-rb/dry-schema/compare/v1.13.0...v1.13.1)
|
12
|
+
|
3
13
|
## 1.13.0 2022-11-24
|
4
14
|
|
5
15
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
data/dry-schema.gemspec
CHANGED
@@ -31,14 +31,14 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-schema"
|
32
32
|
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-schema/issues"
|
33
33
|
|
34
|
-
spec.required_ruby_version = ">= 2.7
|
34
|
+
spec.required_ruby_version = ">= 2.7"
|
35
35
|
|
36
36
|
# to update dependencies edit project.yml
|
37
37
|
spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
|
38
38
|
spec.add_runtime_dependency "dry-configurable", "~> 1.0", ">= 1.0.1"
|
39
39
|
spec.add_runtime_dependency "dry-core", "~> 1.0", "< 2"
|
40
40
|
spec.add_runtime_dependency "dry-initializer", "~> 3.0"
|
41
|
-
spec.add_runtime_dependency "dry-logic", ">= 1.
|
41
|
+
spec.add_runtime_dependency "dry-logic", ">= 1.4", "< 2"
|
42
42
|
spec.add_runtime_dependency "dry-types", ">= 1.7", "< 2"
|
43
43
|
spec.add_runtime_dependency "zeitwerk", "~> 2.6"
|
44
44
|
|
data/lib/dry/schema/dsl.rb
CHANGED
@@ -293,8 +293,8 @@ module Dry
|
|
293
293
|
# @return [Dry::Types::Safe]
|
294
294
|
#
|
295
295
|
# @api private
|
296
|
-
def new(**options, &block)
|
297
|
-
|
296
|
+
def new(klass: self.class, **options, &block)
|
297
|
+
klass.new(**options, processor_type: processor_type, config: config, &block)
|
298
298
|
end
|
299
299
|
|
300
300
|
# Set a type for the given key name
|
@@ -122,7 +122,6 @@ module Dry
|
|
122
122
|
macro.call(...)
|
123
123
|
end
|
124
124
|
end
|
125
|
-
ruby2_keywords :schema if respond_to?(:ruby2_keywords, true)
|
126
125
|
|
127
126
|
# Specify a nested hash with enforced `hash?` type-check
|
128
127
|
#
|
@@ -137,7 +136,6 @@ module Dry
|
|
137
136
|
macro.call(...)
|
138
137
|
end
|
139
138
|
end
|
140
|
-
ruby2_keywords :hash if respond_to?(:ruby2_keywords, true)
|
141
139
|
|
142
140
|
# Specify predicates that should be applied to each element of an array
|
143
141
|
#
|
@@ -161,7 +159,6 @@ module Dry
|
|
161
159
|
macro.value(...)
|
162
160
|
end
|
163
161
|
end
|
164
|
-
ruby2_keywords :each if respond_to?(:ruby2_keywords, true)
|
165
162
|
|
166
163
|
# Like `each` but sets `array?` type-check
|
167
164
|
#
|
@@ -181,7 +178,6 @@ module Dry
|
|
181
178
|
macro.value(...)
|
182
179
|
end
|
183
180
|
end
|
184
|
-
ruby2_keywords :array if respond_to?(:ruby2_keywords, true)
|
185
181
|
|
186
182
|
# Set type spec
|
187
183
|
#
|
@@ -220,6 +216,8 @@ module Dry
|
|
220
216
|
end
|
221
217
|
|
222
218
|
# @api private
|
219
|
+
# rubocop: disable Metrics/AbcSize
|
220
|
+
# rubocop: disable Metrics/CyclomaticComplexity
|
223
221
|
# rubocop: disable Metrics/PerceivedComplexity
|
224
222
|
def extract_type_spec(args, nullable: false, set_type: true)
|
225
223
|
type_spec = args[0] unless schema_or_predicate?(args[0])
|
@@ -232,6 +230,10 @@ module Dry
|
|
232
230
|
|
233
231
|
if type_spec.is_a?(::Array)
|
234
232
|
type_rule = type_spec.map { |ts| new(chain: false).value(ts) }.reduce(:|)
|
233
|
+
elsif type_spec.is_a?(Dry::Types::Sum) && set_type
|
234
|
+
type_rule = [type_spec.left, type_spec.right].map { |ts|
|
235
|
+
new(klass: Core, chain: false).value(ts)
|
236
|
+
}.reduce(:|)
|
235
237
|
else
|
236
238
|
type_predicates = predicate_inferrer[resolved_type]
|
237
239
|
|
@@ -249,6 +251,8 @@ module Dry
|
|
249
251
|
yield(*predicates, type_spec: type_spec, type_rule: nil)
|
250
252
|
end
|
251
253
|
end
|
254
|
+
# rubocop: enable Metrics/AbcSize
|
255
|
+
# rubocop: enable Metrics/CyclomaticComplexity
|
252
256
|
# rubocop: enable Metrics/PerceivedComplexity
|
253
257
|
|
254
258
|
# @api private
|
data/lib/dry/schema/result.rb
CHANGED
data/lib/dry/schema/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.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:
|
11
|
+
date: 2023-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -84,7 +84,7 @@ dependencies:
|
|
84
84
|
requirements:
|
85
85
|
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '1.
|
87
|
+
version: '1.4'
|
88
88
|
- - "<"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '2'
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
requirements:
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '1.
|
97
|
+
version: '1.4'
|
98
98
|
- - "<"
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '2'
|
@@ -274,14 +274,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
274
274
|
requirements:
|
275
275
|
- - ">="
|
276
276
|
- !ruby/object:Gem::Version
|
277
|
-
version: 2.7
|
277
|
+
version: '2.7'
|
278
278
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
279
|
requirements:
|
280
280
|
- - ">="
|
281
281
|
- !ruby/object:Gem::Version
|
282
282
|
version: '0'
|
283
283
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
284
|
+
rubygems_version: 3.3.26
|
285
285
|
signing_key:
|
286
286
|
specification_version: 4
|
287
287
|
summary: Coercion and validation for data structures
|