dry-schema 1.3.4 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +253 -101
  3. data/LICENSE +1 -1
  4. data/README.md +6 -6
  5. data/config/errors.yml +4 -0
  6. data/dry-schema.gemspec +46 -0
  7. data/lib/dry-schema.rb +1 -1
  8. data/lib/dry/schema.rb +20 -7
  9. data/lib/dry/schema/compiler.rb +4 -4
  10. data/lib/dry/schema/config.rb +15 -6
  11. data/lib/dry/schema/constants.rb +19 -9
  12. data/lib/dry/schema/dsl.rb +144 -38
  13. data/lib/dry/schema/extensions.rb +10 -2
  14. data/lib/dry/schema/extensions/hints.rb +15 -8
  15. data/lib/dry/schema/extensions/hints/message_compiler_methods.rb +2 -2
  16. data/lib/dry/schema/extensions/hints/message_set_methods.rb +0 -47
  17. data/lib/dry/schema/extensions/info.rb +27 -0
  18. data/lib/dry/schema/extensions/info/schema_compiler.rb +105 -0
  19. data/lib/dry/schema/extensions/monads.rb +1 -1
  20. data/lib/dry/schema/extensions/struct.rb +32 -0
  21. data/lib/dry/schema/json.rb +1 -1
  22. data/lib/dry/schema/key.rb +20 -5
  23. data/lib/dry/schema/key_coercer.rb +4 -4
  24. data/lib/dry/schema/key_map.rb +9 -4
  25. data/lib/dry/schema/key_validator.rb +66 -0
  26. data/lib/dry/schema/macros.rb +8 -8
  27. data/lib/dry/schema/macros/array.rb +17 -4
  28. data/lib/dry/schema/macros/core.rb +11 -6
  29. data/lib/dry/schema/macros/dsl.rb +53 -21
  30. data/lib/dry/schema/macros/each.rb +4 -4
  31. data/lib/dry/schema/macros/filled.rb +5 -6
  32. data/lib/dry/schema/macros/hash.rb +21 -3
  33. data/lib/dry/schema/macros/key.rb +10 -10
  34. data/lib/dry/schema/macros/maybe.rb +4 -5
  35. data/lib/dry/schema/macros/optional.rb +1 -1
  36. data/lib/dry/schema/macros/required.rb +1 -1
  37. data/lib/dry/schema/macros/schema.rb +23 -2
  38. data/lib/dry/schema/macros/value.rb +34 -7
  39. data/lib/dry/schema/message.rb +35 -9
  40. data/lib/dry/schema/message/or.rb +18 -39
  41. data/lib/dry/schema/message/or/abstract.rb +28 -0
  42. data/lib/dry/schema/message/or/multi_path.rb +37 -0
  43. data/lib/dry/schema/message/or/single_path.rb +64 -0
  44. data/lib/dry/schema/message_compiler.rb +40 -19
  45. data/lib/dry/schema/message_compiler/visitor_opts.rb +2 -2
  46. data/lib/dry/schema/message_set.rb +26 -37
  47. data/lib/dry/schema/messages.rb +6 -6
  48. data/lib/dry/schema/messages/abstract.rb +79 -66
  49. data/lib/dry/schema/messages/i18n.rb +36 -10
  50. data/lib/dry/schema/messages/namespaced.rb +13 -3
  51. data/lib/dry/schema/messages/template.rb +19 -44
  52. data/lib/dry/schema/messages/yaml.rb +72 -13
  53. data/lib/dry/schema/params.rb +1 -1
  54. data/lib/dry/schema/path.rb +44 -5
  55. data/lib/dry/schema/predicate.rb +2 -2
  56. data/lib/dry/schema/predicate_inferrer.rb +4 -184
  57. data/lib/dry/schema/predicate_registry.rb +3 -24
  58. data/lib/dry/schema/primitive_inferrer.rb +3 -86
  59. data/lib/dry/schema/processor.rb +54 -50
  60. data/lib/dry/schema/processor_steps.rb +139 -0
  61. data/lib/dry/schema/result.rb +52 -5
  62. data/lib/dry/schema/rule_applier.rb +8 -7
  63. data/lib/dry/schema/step.rb +79 -0
  64. data/lib/dry/schema/trace.rb +5 -4
  65. data/lib/dry/schema/type_container.rb +3 -3
  66. data/lib/dry/schema/type_registry.rb +2 -2
  67. data/lib/dry/schema/types.rb +1 -1
  68. data/lib/dry/schema/value_coercer.rb +2 -2
  69. data/lib/dry/schema/version.rb +1 -1
  70. metadata +21 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9efbd58d7d7d70ec01d578de507f1fc6ba3e78bfeb81e30e8b69a2ca29fbc753
4
- data.tar.gz: 874370eec0e97f1b87bee9a18d606a45b0aba4d80729c7637407147f4f01a7fc
3
+ metadata.gz: 45a3441f7099ddd2ea6c0af6345f1fdcff20cf0629953dfc1eedcce5f8f54995
4
+ data.tar.gz: 841584478740cfc72a653e50445b9e3a16c01a6ce49b2c8c8375da76811ca50d
5
5
  SHA512:
6
- metadata.gz: 8b23a5b75861ef7f9c9ab8430439f580877788c98f79268913723e9fea653df7aaf3fc074839ce561b42c8f7268f9a22069e0a7c8c3f71b20f9cdd4956df1aad
7
- data.tar.gz: ee1987669c04d04b93d20d1a975c2418b8cf9b355caf96a313f9a7f4b50d60514ec2071af82d263f0972fc3c24c865c3fb67b7073a914a3dce1636ce958ea455
6
+ metadata.gz: 368b80c79f2598dd4cf215c8223dbd704b75909857acf9fa51e60abed19ba3bdc2904ce5d7227ef7259b45593017131ce6ab5434ee3d713fe6b97eed643eecd8
7
+ data.tar.gz: 4f5ac8469feb749ed6ca95c022f99b822204d1b1cdde05969795571cabd43cd573111c86cfb4322413a22b5e99958156ba061a598c381989510ecf700fbfc7f0
@@ -1,40 +1,178 @@
1
- # 1.3.4 2019-09-11
1
+ ## 1.5.0 2020-03-11
2
+
3
+
4
+ ### Added
5
+
6
+ - Support for complex sum types ie `value([:integer, array[:integer])` (issue #214) (@solnic)
7
+ - You can now set global config via `Dry::Schema.config` (issue #205) (@robhanlon22)
8
+ - Default error message for `:uuid_v4?` predicate (isssue #230) (@solnic)
9
+ - [experimental] you can compose schemas in the DSL using the standard logic operators (issue #231 closed via #245) (@solnic)
10
+ - Hash schema type can now be used with proper keys and predicates inferring. Constructor
11
+ and default types are explicitly not supported (@flash-gordon)
12
+ ```ruby
13
+ UserType = Dry::Types['hash'].schema(
14
+ name: 'string',
15
+ email: 'string'
16
+ )
17
+
18
+ Dry::Schema.define do
19
+ require(:user).hash(UserType)
20
+ end
21
+ ```
22
+ - `:struct` extension which allows using dry-struct classes as source for hash schemas. Note that output will still be presented as plain hashes, returning structs from schemas will require more work, it's planned for next versions (@flash-gordon)
23
+ - `:info` extension which adds #info method to your schemas which produces a simple hash providing information about keys and types (issue #36 closed via #262) (@solnic)
2
24
 
3
25
  ### Fixed
4
26
 
5
- * Fixed regression where using `array?` predicate within a block would crach (issue #186) (@skryukov)
27
+ - `maybe` macro in JSON schemas no longer converts empty strings to `nil`.
28
+ This was a bug in dry-types but your code may rely on this behavior. If you still
29
+ require this behavior, we recommend using a custom type (see Advanced -> Custom types in the docs) (@flash-gordon)
30
+ - YAML message backend no longer crashes when load_paths are empty (@robhanlon22)
31
+ - Callbacks can now be inherited from multiple parents (@skryukov)
32
+ - Callbacks work with nested schemas (issue #209) (@solnic)
33
+ - Custom type is respected when defining nested schemas (issue #174 closed via 263) (@solnic)
34
+ - Key map is properly inferred for maybe-hashes (issue #266 fixed via #269) (@solnic)
35
+
36
+ ### Changed
37
+
38
+ - `:i18n` message backend delegates interpolation and caching to `I18n` (issue #211) (@robhanlon22)
39
+ - Raise ArgumentError in DSL if parent DSL configs differ (@robhanlon22)
40
+ - (internal) `PredicateInferrer` was removed. `Dry::Types::PredicateInferrer` is a drop-in replacement (@flash-gordon)
41
+
42
+ [Compare v1.4.3...v1.5.0](https://github.com/dry-rb/dry-schema/compare/v1.4.3...v1.5.0)
43
+
44
+ ## 1.4.3 2020-01-08
45
+
46
+
47
+ ### Added
48
+
49
+ - Pattern matching for `Dry::Schema::Result` objects (@flash-gordon)
50
+ ```ruby
51
+ schema = Dry::Schema::Params { required(:name).filled }
52
+ case schema.('name' => 'John')
53
+ in name:
54
+ name # => 'John'
55
+ end
56
+ ```
57
+ Try it with monads!
58
+ - Shortcut for nested schemas in `value` and `maybe` macros (@waiting-for-dev)
59
+ ```ruby
60
+ Dry::Schema.Params do
61
+ required(:address).value(:hash) do
62
+ required(:city).filled
63
+ end
64
+ end
65
+ ```
66
+
67
+ ### Fixed
68
+
69
+ - Some keyword warnings that slipped into the previous release (@flash-gordon)
70
+
71
+
72
+ [Compare v1.4.2...v1.4.3](https://github.com/dry-rb/dry-schema/compare/v1.4.2...v1.4.3)
73
+
74
+ ## 1.4.2 2019-12-19
75
+
76
+
77
+ ### Fixed
78
+
79
+ - `I18n` messages backend supports procs as text properly (issue #208) (@robhanlon22)
80
+ - `I18n` messages backend supports message meta-data (issue #210) (@robhanlon22)
81
+ - Fixed keyword warnings from MRI 2.7.0 (@flash-gordon)
82
+ - Array with a member works correctly with `maybe` (issue #206) (@solnic)
83
+
84
+
85
+ [Compare v1.4.1...v1.4.2](https://github.com/dry-rb/dry-schema/compare/v1.4.1...v1.4.2)
86
+
87
+ ## 1.4.1 2019-10-08
88
+
89
+
90
+ ### Fixed
91
+
92
+ - Child schemas no longer mutate processing steps of their parent classes (@skryukov)
93
+
94
+
95
+ [Compare v1.4.0...v1.4.1](https://github.com/dry-rb/dry-schema/compare/v1.4.0...v1.4.1)
96
+
97
+ ## 1.4.0 2019-10-08
98
+
99
+
100
+ ### Added
101
+
102
+ - Support for passing multiple parent schemas. They are inherited from left to right (@ianwhite)
103
+
104
+ ```ruby
105
+ Dry::Schema.define(parent: [parent_a, parent_b, parent_c]) do
106
+ ...
107
+ end
108
+ ```
109
+ - Improved error messages about missing translations (@skryukov)
110
+ - [experimental] before/after callbacks for schema steps (@skryukov)
111
+
112
+ ```ruby
113
+ Dry::Schema.Params do
114
+ required(:name).value(:string)
115
+ optional(:age).value(:integer)
116
+
117
+ before(:value_coercer) do |result|
118
+ result.to_h.compact
119
+ end
120
+ end
121
+ ```
122
+
123
+ ### Fixed
124
+
125
+ - Added/fixed support for custom optional types (@flash-gordon)
126
+
127
+
128
+ [Compare v1.3.4...v1.4.0](https://github.com/dry-rb/dry-schema/compare/v1.3.4...v1.4.0)
129
+
130
+ ## 1.3.4 2019-09-11
131
+
132
+
133
+ ### Fixed
134
+
135
+ - Fixed regression where using `array?` predicate within a block would crach (issue #186) (@skryukov)
136
+
6
137
 
7
138
  [Compare v1.3.3...v1.3.4](https://github.com/dry-rb/dry-schema/compare/v1.3.3...v1.3.4)
8
139
 
9
- # 1.3.3 2019-08-14
140
+ ## 1.3.3 2019-08-14
141
+
10
142
 
11
143
  ### Fixed
12
144
 
13
- * Reject attempts to build a nested schema for array types built on `Dry::Types::Nominal` (fixed #171) (@flash-gordon)
14
- * Current `I18n.locale` is now properly handled when caching message templates (@flash-gordon)
15
- * Default processor uses strict types by default, which fixes various cases when `maybe` is used with a constructor type (@flash-gordon)
16
- * Namespaced messages no longer causes a crash when used with nested schemas (fixed #176) (@solnic)
145
+ - Reject attempts to build a nested schema for array types built on `Dry::Types::Nominal` (fixed #171) (@flash-gordon)
146
+ - Current `I18n.locale` is now properly handled when caching message templates (@flash-gordon)
147
+ - Default processor uses strict types by default, which fixes various cases when `maybe` is used with a constructor type (@flash-gordon)
148
+ - Namespaced messages no longer causes a crash when used with nested schemas (fixed #176) (@solnic)
149
+
17
150
 
18
151
  [Compare v1.3.2...v1.3.3](https://github.com/dry-rb/dry-schema/compare/v1.3.2...v1.3.3)
19
152
 
20
- # 1.3.2 2019-08-01
153
+ ## 1.3.2 2019-08-01
154
+
21
155
 
22
156
  ### Added
23
157
 
24
- * Support for new predicates: `bytesize?`, `min_bytesize?` and `max_bytesize?` (@bmalinconico)
158
+ - Support for new predicates: `bytesize?`, `min_bytesize?` and `max_bytesize?` (@bmalinconico)
159
+
25
160
 
26
161
  [Compare v1.3.1...v1.3.2](https://github.com/dry-rb/dry-schema/compare/v1.3.1...v1.3.2)
27
162
 
28
- # 1.3.1 2019-07-08
163
+ ## 1.3.1 2019-07-08
164
+
29
165
 
30
166
  ### Fixed
31
167
 
32
- * `Result#error?` works correctly with nested hashes and arrays (@solnic)
33
- * `:hints` extension no longer causes a crash where base messages are generated too (issue #165) (@solnic)
168
+ - `Result#error?` works correctly with nested hashes and arrays (@solnic)
169
+ - `:hints` extension no longer causes a crash where base messages are generated too (issue #165) (@solnic)
170
+
34
171
 
35
172
  [Compare v1.3.0...v1.3.1](https://github.com/dry-rb/dry-schema/compare/v1.3.0...v1.3.1)
36
173
 
37
- # 1.3.0 2019-07-06
174
+ ## 1.3.0 2019-07-06
175
+
38
176
 
39
177
  ### Added
40
178
 
@@ -49,16 +187,17 @@
49
187
 
50
188
  schema.(name: '').errors.to_h # => { name: ["size cannot be less than 1"] }
51
189
  ```
52
-
53
190
  - Support for redefining re-used schemas (issue #43) (@skryukov)
54
191
 
55
192
  ### Fixed
56
193
 
57
194
  - Type container is passed down to nested schemas (@flash-gordon)
58
195
 
196
+
59
197
  [Compare v1.2.0...v1.3.0](https://github.com/dry-rb/dry-schema/compare/v1.2.0...v1.3.0)
60
198
 
61
- # v1.2.0 2019-06-13
199
+ ## 1.2.0 2019-06-13
200
+
62
201
 
63
202
  ### Added
64
203
 
@@ -94,83 +233,96 @@
94
233
 
95
234
  [Compare v1.1.0...v1.2.0](https://github.com/dry-rb/dry-schema/compare/v1.1.0...v1.2.0)
96
235
 
97
- # v1.1.0 2019-05-30
236
+ ## 1.1.0 2019-05-30
237
+
98
238
 
99
239
  ### Added
100
240
 
101
- - `config.messages.default_locale` for setting...default locale (surprise, surprise) (solnic)
102
- - `Config` exposes `predicates` setting too (solnic)
241
+ - `config.messages.default_locale` for setting...default locale (surprise, surprise) (@solnic)
242
+ - `Config` exposes `predicates` setting too (@solnic)
103
243
 
104
244
  ### Fixed
105
245
 
106
- - `filled` macro behavior results in `must be filled` error messages when appropriate - see PR #141 for more information (issue #134) (solnic)
107
- - Filter rules no longer cause keys to be added to input (issue #142) (solnic)
108
- - Filter rules work now with inheritance (solnic)
109
- - Inherited type schemas used by coercion are now properly configured as `lax` type (solnic)
110
- - `Config` is now finalized before instantiating schemas and properly dupped when its inherited (flash-gordon + solnic)
111
- - `Config#eql?` works as expected (solnic)
112
- - Predicates are properly inferred from array with a member type spec, ie `array[:integer]` results in `array? + each(:integer?)` (issue #140) (solnic)
246
+ - `filled` macro behavior results in `must be filled` error messages when appropriate - see PR #141 for more information (issue #134) (@solnic)
247
+ - Filter rules no longer cause keys to be added to input (issue #142) (@solnic)
248
+ - Filter rules work now with inheritance (@solnic)
249
+ - Inherited type schemas used by coercion are now properly configured as `lax` type (@solnic)
250
+ - `Config` is now finalized before instantiating schemas and properly dupped when its inherited (@flash-gordon + @solnic)
251
+ - `Config#eql?` works as expected (@solnic)
252
+ - Predicates are properly inferred from array with a member type spec, ie `array[:integer]` results in `array? + each(:integer?)` (issue #140) (@solnic)
253
+
113
254
 
114
255
  [Compare v1.0.3...v1.1.0](https://github.com/dry-rb/dry-schema/compare/v1.0.3...v1.1.0)
115
256
 
116
- # v1.0.3 2019-05-21
257
+ ## 1.0.3 2019-05-21
258
+
117
259
 
118
260
  ### Fixed
119
261
 
120
- - `Object#hash` is no longer used to calculate cache keys due to a potential risk of having hash collisions (solnic)
121
- - Predicate arguments are used again for template cache keys (solnic)
122
- - `I18n` messages backend no longer evaluates templates twice (solnic)
262
+ - `Object#hash` is no longer used to calculate cache keys due to a potential risk of having hash collisions (@solnic)
263
+ - Predicate arguments are used again for template cache keys (@solnic)
264
+ - `I18n` messages backend no longer evaluates templates twice (@solnic)
265
+
123
266
 
124
267
  [Compare v1.0.2...v1.0.3](https://github.com/dry-rb/dry-schema/compare/v1.0.2...v1.0.3)
125
268
 
126
- # v1.0.2 2019-05-12
269
+ ## 1.0.2 2019-05-12
270
+
127
271
 
128
272
  ### Fixed
129
273
 
130
- - Caching message templates uses restricted set of known keys to calculate cache keys (issue #132) (solnic)
274
+ - Caching message templates uses restricted set of known keys to calculate cache keys (issue #132) (@solnic)
275
+
131
276
 
132
277
  [Compare v1.0.1...v1.0.2](https://github.com/dry-rb/dry-schema/compare/v1.0.1...v1.0.2)
133
278
 
134
- # 1.0.1 2019-05-08
279
+ ## 1.0.1 2019-05-08
280
+
135
281
 
136
282
  ### Fixed
137
283
 
138
- - Applying `key?` predicate no longer causes recursive calls to `Result#errors` (issue #130) (solnic)
284
+ - Applying `key?` predicate no longer causes recursive calls to `Result#errors` (issue #130) (@solnic)
139
285
 
140
- [Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-schema/compare/v1.0.0...v1.0.1)
141
286
 
142
- # 1.0.0 2019-05-03
287
+ [Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-schema/compare/v1.0.0...v1.0.1)
143
288
 
144
- ### Changed
289
+ ## 1.0.0 2019-05-03
145
290
 
146
- - [BREAKING] `Result#to_hash` was removed (solnic)
147
291
 
148
292
  ### Fixed
149
293
 
150
- - Setting `:any` as the type spec no longer crashes (solnic)
151
- - `Result#error?` handles paths to array elements correctly (solnic)
294
+ - Setting `:any` as the type spec no longer crashes (@solnic)
295
+ - `Result#error?` handles paths to array elements correctly (@solnic)
296
+
297
+ ### Changed
298
+
299
+ - [BREAKING] `Result#to_hash` was removed (@solnic)
152
300
 
153
301
  [Compare v0.6.0...v1.0.0](https://github.com/dry-rb/dry-schema/compare/v0.6.0...v1.0.0)
154
302
 
155
- # 0.6.0 2019-04-24
303
+ ## 0.6.0 2019-04-24
304
+
156
305
 
157
306
  ### Changed
158
307
 
159
- - Dependency on `dry-types` was bumped to `~> 1.0` (solnic)
160
- - Dependency on `dry-logic` was bumped to `~> 1.0` (solnic)
161
- - Dependency on `dry-initializer` was bumped to `~> 3.0` (solnic)
308
+ - Dependency on `dry-types` was bumped to `~> 1.0` (@solnic)
309
+ - Dependency on `dry-logic` was bumped to `~> 1.0` (@solnic)
310
+ - Dependency on `dry-initializer` was bumped to `~> 3.0` (@solnic)
162
311
 
163
312
  [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-schema/compare/v0.5.1...v0.6.0)
164
313
 
165
- # 0.5.1 2019-04-17
314
+ ## 0.5.1 2019-04-17
315
+
166
316
 
167
317
  ### Fixed
168
318
 
169
- - Key map no longer crashes on unexpected input (issue #118) (solnic)
319
+ - Key map no longer crashes on unexpected input (issue #118) (@solnic)
320
+
170
321
 
171
322
  [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-schema/compare/v0.5.0...v0.5.1)
172
323
 
173
- # 0.5.0 2019-04-04
324
+ ## 0.5.0 2019-04-04
325
+
174
326
 
175
327
  ### Added
176
328
 
@@ -185,10 +337,9 @@
185
337
  code: 123
186
338
  ```
187
339
 
188
- Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (solnic + flash-gordon)
189
-
190
- - Support for type specs in `array` macro, ie `required(:tags).array(:integer)` (solnic)
191
- - Support for type specs in `each` macro, ie `required(:tags).each(:integer)` (solnic)
340
+ Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (@solnic + @flash-gordon)
341
+ - Support for type specs in `array` macro, ie `required(:tags).array(:integer)` (@solnic)
342
+ - Support for type specs in `each` macro, ie `required(:tags).each(:integer)` (@solnic)
192
343
  - Shortcut for defining an array with hash as its member, ie:
193
344
 
194
345
  ```ruby
@@ -201,110 +352,111 @@
201
352
 
202
353
  ### Fixed
203
354
 
204
- - Inferring predicates doesn't crash when `Any` type is used (flash-gordon)
205
- - Inferring type specs when type is already set works correctly (solnic)
355
+ - Inferring predicates doesn't crash when `Any` type is used (@flash-gordon)
356
+ - Inferring type specs when type is already set works correctly (@solnic)
206
357
 
207
358
  ### Changed
208
359
 
209
- - [BREAKING] `:monads` extension wraps entire result objects in `Success` or `Failure` (flash-gordon)
210
- - When `:hints` are disabled, result AST will not include hint nodes (solnic)
360
+ - [BREAKING] `:monads` extension wraps entire result objects in `Success` or `Failure` (@flash-gordon)
361
+ - When `:hints` are disabled, result AST will not include hint nodes (@solnic)
211
362
 
212
363
  [Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-schema/compare/v0.4.0...v0.5.0)
213
364
 
214
- # 0.4.0 2019-03-26
365
+ ## 0.4.0 2019-03-26
366
+
215
367
 
216
368
  ### Added
217
369
 
218
- - Schemas are now compatible with procs via `#to_proc` (issue #53) (solnic)
219
- - Support for configuring `top_namespace` for localized messages (solnic)
220
- - Support for configuring more than one load path for localized messages (solnic)
221
- - Support for inferring predicates from arbitrary types (issue #101) (solnic)
370
+ - Schemas are now compatible with procs via `#to_proc` (issue #53) (@solnic)
371
+ - Support for configuring `top_namespace` for localized messages (@solnic)
372
+ - Support for configuring more than one load path for localized messages (@solnic)
373
+ - Support for inferring predicates from arbitrary types (issue #101) (@solnic)
222
374
 
223
375
  ### Fixed
224
376
 
225
- - Handling of messages for `optional` keys without value rules works correctly (issue #87) (solnic)
226
- - Message structure for `optional` keys with an array of hashes no longer duplicates keys (issue #89) (solnic)
227
- - Inferring `:date_time?` predicate works correctly with `DateTime` types (issue #97) (solnic)
377
+ - Handling of messages for `optional` keys without value rules works correctly (issue #87) (@solnic)
378
+ - Message structure for `optional` keys with an array of hashes no longer duplicates keys (issue #89) (@solnic)
379
+ - Inferring `:date_time?` predicate works correctly with `DateTime` types (issue #97) (@solnic)
228
380
 
229
381
  ### Changed
230
382
 
231
- - [BREAKING] Updated to work with `dry-types 0.15.0` (flash-gordon)
232
- - [BREAKING] `Result#{errors,messages,hints}` returns `MessageSet` object now which is an enumerable coercible to a hash (solnic)
233
- - [BREAKING] `Messages` backend classes no longer use global configuration (solnic)
234
- - [BREAKING] Passing a non-symbol key name in the DSL will raise `ArgumentError` (issue #29) (solnic)
383
+ - [BREAKING] Updated to work with `dry-types 0.15.0` (@flash-gordon)
384
+ - [BREAKING] `Result#{errors,messages,hints}` returns `MessageSet` object now which is an enumerable coercible to a hash (@solnic)
385
+ - [BREAKING] `Messages` backend classes no longer use global configuration (@solnic)
386
+ - [BREAKING] Passing a non-symbol key name in the DSL will raise `ArgumentError` (issue #29) (@solnic)
235
387
  - [BREAKING] Configuration for message backends is now nested under `messages` key with following settings:
236
388
  - `messages.backend` - previously `messages`
237
389
  - `messages.load_paths` - previously `messages_path`
238
390
  - `messages.namespace` - previously `namespace`
239
391
  - `messages.top_namespace` - **new setting** see above
240
- - [BREAKING] `Messages::I18n` uses `I18.store_translations` instead of messing with `I18n.load_path` (solnic)
241
- - Schemas (`Params` and `JSON`) have nicer inspect (solnic)
392
+ - [BREAKING] `Messages::I18n` uses `I18.store_translations` instead of messing with `I18n.load_path` (@solnic)
393
+ - Schemas (`Params` and `JSON`) have nicer inspect (@solnic)
242
394
 
243
395
  [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-schema/compare/v0.3.0...v0.4.0)
244
396
 
245
- # 0.3.0 2018-03-04
397
+ ## 0.3.0 2018-03-04
398
+
246
399
 
247
400
  ### Fixed
248
401
 
249
- - Configuration is properly inherited from a parent schema (skryukov)
250
- - `Result#error?` returns `true` when a preceding key has errors (solnic)
251
- - Predicate inferrer no longer chokes on sum, constructor and enum types (solnic)
252
- - Predicate inferrer infers `:bool?` from boolean types (solnic)
253
- - Block-based definitions using `array` works correctly (solnic)
254
- - Using a disjunction with `array` and `hash` produces correct errors when element validation for array failed (solnic)
402
+ - Configuration is properly inherited from a parent schema (@skryukov)
403
+ - `Result#error?` returns `true` when a preceding key has errors (@solnic)
404
+ - Predicate inferrer no longer chokes on sum, constructor and enum types (@solnic)
405
+ - Predicate inferrer infers `:bool?` from boolean types (@solnic)
406
+ - Block-based definitions using `array` works correctly (@solnic)
407
+ - Using a disjunction with `array` and `hash` produces correct errors when element validation for array failed (@solnic)
255
408
 
256
409
  ### Changed
257
410
 
258
- - Required ruby version was removed from gemspec for people who are stuck on MRI 2.3.x (solnic)
411
+ - Required ruby version was removed from gemspec for people who are stuck on MRI 2.3.x (@solnic)
259
412
 
260
413
  [Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-schema/compare/v0.2.0...v0.3.0)
261
414
 
262
- # 0.2.0 2019-02-26
415
+ ## 0.2.0 2019-02-26
416
+
263
417
 
264
418
  ### Added
265
419
 
266
- - New `hash` macro which prepends `hash?` type-check and allows nested schema definition (solnic)
267
- - New `array` macro which works like `each` but prepends `array?` type-check (solnic)
420
+ - New `hash` macro which prepends `hash?` type-check and allows nested schema definition (@solnic)
421
+ - New `array` macro which works like `each` but prepends `array?` type-check (@solnic)
268
422
 
269
423
  ### Fixed
270
424
 
271
- - Rule name translation works correctly with I18n (issue #52) (solnic)
272
- - Rule name translation works correctly with namespaced messages (both I18n and plain YAML) (issue #57) (solnic)
273
- - Error messages under namespaces are correctly resolved for overridden names (issue #53) (solnic)
274
- - Namespaced error messages work correctly when schemas are reused within other schemas (issue #49) (solnic)
275
- - Child schema can override inherited rules now (issue #66) (skryukov)
276
- - Hints are correctly generated for disjunction that use type-check predicates (issue #24) (solnic)
277
- - Hints are correctly generated for nested schemas (issue #26) (solnic)
278
- - `filled` macro respects inferred type-check predicates and puts them in front (solnic)
279
- - Value coercion works correctly with re-usable nested schemas (issue #25) (solnic)
425
+ - Rule name translation works correctly with I18n (issue #52) (@solnic)
426
+ - Rule name translation works correctly with namespaced messages (both I18n and plain YAML) (issue #57) (@solnic)
427
+ - Error messages under namespaces are correctly resolved for overridden names (issue #53) (@solnic)
428
+ - Namespaced error messages work correctly when schemas are reused within other schemas (issue #49) (@solnic)
429
+ - Child schema can override inherited rules now (issue #66) (@skryukov)
430
+ - Hints are correctly generated for disjunction that use type-check predicates (issue #24) (@solnic)
431
+ - Hints are correctly generated for nested schemas (issue #26) (@solnic)
432
+ - `filled` macro respects inferred type-check predicates and puts them in front (@solnic)
433
+ - Value coercion works correctly with re-usable nested schemas (issue #25) (@solnic)
280
434
 
281
435
  ### Changed
282
436
 
283
- - [BREAKING] **Messages are now configured under `dry_schema` namespace by default** (issue #38) (solnic)
284
- - [BREAKING] Hints are now an optional feature provided by `:hints` extension, to load it do `Dry::Schema.load_extensions(:hints)` (solnic)
285
- - [BREAKING] Hints generation was improved in general, output of `Result#messages` and `Result#hints` changed in some cases (solnic)
286
- - [BREAKING] `schema` macro no longer prepends `hash?` check, for this behavior use the new `hash` macro (see #31) (solnic)
287
- - [BREAKING] Support for MRI < 2.4 was dropped (solnic)
437
+ - [BREAKING] **Messages are now configured under `dry_schema` namespace by default** (issue #38) (@solnic)
438
+ - [BREAKING] Hints are now an optional feature provided by `:hints` extension, to load it do `Dry::Schema.load_extensions(:hints)` (@solnic)
439
+ - [BREAKING] Hints generation was improved in general, output of `Result#messages` and `Result#hints` changed in some cases (@solnic)
440
+ - [BREAKING] `schema` macro no longer prepends `hash?` check, for this behavior use the new `hash` macro (see #31) (@solnic)
441
+ - [BREAKING] Support for MRI < 2.4 was dropped (@solnic)
288
442
 
289
443
  [Compare v0.1.1...v0.2.0](https://github.com/dry-rb/dry-schema/compare/v0.1.1...v0.2.0)
290
444
 
291
- # 0.1.1 2019-02-17
445
+ ## 0.1.1 2019-02-17
446
+
292
447
 
293
448
  ### Added
294
449
 
295
- - `Result#error?` supports checking nested errors too ie`result.error?('user.address')` (solnic)
450
+ - `Result#error?` supports checking nested errors too ie`result.error?('user.address')` (@solnic)
296
451
 
297
452
  ### Fixed
298
453
 
299
- - Fix issues with templates and invalid tokens (issue #27) (solnic)
300
- - Fix Ruby warnings (flash-gordon)
301
-
302
- ### Internal
454
+ - Fix issues with templates and invalid tokens (issue #27) (@solnic)
455
+ - Fix Ruby warnings (@flash-gordon)
303
456
 
304
- - Key and value coercers are now equalizable (flash-gordon)
305
457
 
306
458
  [Compare v0.1.0...v0.1.1](https://github.com/dry-rb/dry-schema/compare/v0.1.0...v0.1.1)
307
459
 
308
- # 0.1.0 2019-01-30
460
+ ## 0.1.0 2019-01-30
309
461
 
310
462
  Initial release.