dry-schema 1.4.2 → 1.5.3

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +217 -78
  3. data/LICENSE +1 -1
  4. data/README.md +4 -4
  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 +19 -6
  9. data/lib/dry/schema/compiler.rb +5 -5
  10. data/lib/dry/schema/config.rb +15 -6
  11. data/lib/dry/schema/constants.rb +16 -7
  12. data/lib/dry/schema/dsl.rb +87 -27
  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 +1 -1
  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 +16 -1
  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 +67 -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 +9 -4
  29. data/lib/dry/schema/macros/dsl.rb +34 -19
  30. data/lib/dry/schema/macros/each.rb +4 -4
  31. data/lib/dry/schema/macros/filled.rb +5 -5
  32. data/lib/dry/schema/macros/hash.rb +21 -3
  33. data/lib/dry/schema/macros/key.rb +9 -9
  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 +55 -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 +54 -56
  49. data/lib/dry/schema/messages/i18n.rb +29 -27
  50. data/lib/dry/schema/messages/namespaced.rb +12 -2
  51. data/lib/dry/schema/messages/template.rb +19 -44
  52. data/lib/dry/schema/messages/yaml.rb +61 -14
  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 +4 -2
  56. data/lib/dry/schema/predicate_inferrer.rb +4 -184
  57. data/lib/dry/schema/predicate_registry.rb +2 -2
  58. data/lib/dry/schema/primitive_inferrer.rb +16 -0
  59. data/lib/dry/schema/processor.rb +49 -28
  60. data/lib/dry/schema/processor_steps.rb +50 -27
  61. data/lib/dry/schema/result.rb +52 -5
  62. data/lib/dry/schema/rule_applier.rb +7 -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: ebd83b8cd1025c9f732f593b47d52583455bac56def9866901a374cd9f24dc11
4
- data.tar.gz: def7d4f585ab856a055667474bc6cb59e7f012e13dcf0a4a9d17daa9b0ea53d1
3
+ metadata.gz: ed1f0c97144ee071608d437d3d0f17b8031e942bc53335dddd52f9701c51c1c0
4
+ data.tar.gz: c6d24ab22475c7794c999a7e04b3106451356080014ef4c087a4d1458bc21783
5
5
  SHA512:
6
- metadata.gz: 77a2481151c16aa91e1a29a32e640adadfcefcbceacbd5e1e8cdfcd63c29d186dbc17640d9da0974c37a2e152440da723fd516cac7362cd195b24630011905d0
7
- data.tar.gz: c5cf256d2b61a3dc7b832f68d6ce64c735f00a7885f42a05f53f67a07ec6108322d996ea243387dc91b5acfbb57765129e8d25bfecbb2c151a5e18ac3c709c50
6
+ metadata.gz: 91e0a095b534dc935c372830e8cfc5ae55fd854994b7641b90e59efd11e739b81296b575a486836982b99804349c3d2cd8d539ea207101b43675db95b0a0557a
7
+ data.tar.gz: c4e691dfe79c69a6d71e4046d9d81d23b8da16b4861b313fd66977d3d0be2a337bf7e80e6aef23c85561217608b2d589ce098c4c9626a177106eb45158e079b8
@@ -1,34 +1,149 @@
1
- # 1.4.2 2019-12-19
1
+ ## 1.5.3 2020-08-21
2
+
3
+
4
+ ### Fixed
5
+
6
+ - Key validator works correctly with an array with maybe hash as its member (issue #308 fixed via #309) (@tadeusz-niemiec)
7
+
8
+ ### Changed
9
+
10
+ - [info extension] small performance improvement in the set visitor (see #305 for more details) (@esparta)
11
+
12
+ [Compare v1.5.2...v1.5.3](https://github.com/dry-rb/dry-schema/compare/v1.5.2...v1.5.3)
13
+
14
+ ## 1.5.2 2020-06-26
15
+
16
+
17
+ ### Fixed
18
+
19
+ - `Result#{success?,failure?}` work as expected when there are only key validation failures (issue #297 fixed via #298) (@adamransom)
20
+
21
+ ### Changed
22
+
23
+ - Using `full` option no longer adds a space between the name of a key and the message in case of languages that have no spaces between words (ie Japanese) (issue #161 closed via #292 by @tadeusz-niemiec)
24
+
25
+ [Compare v1.5.1...v1.5.2](https://github.com/dry-rb/dry-schema/compare/v1.5.1...v1.5.2)
26
+
27
+ ## 1.5.1 2020-05-21
28
+
29
+
30
+ ### Fixed
31
+
32
+ - Negated predicates support the logic operator API now (fixed via #276 by @solnic)
33
+ - Fixed circular require warning (issue #279 closed via #282 by @landongrindheim)
34
+ - Validating keys against an array with non-hash members no longer crashes (issue #283 fixed via #284 by @beechnut and issue #289 fixed via #288 by @tadeusz-niemiec)
35
+
36
+
37
+ [Compare v1.5.0...v1.5.1](https://github.com/dry-rb/dry-schema/compare/v1.5.0...v1.5.1)
38
+
39
+ ## 1.5.0 2020-03-11
40
+
41
+
42
+ ### Added
43
+
44
+ - Support for complex sum types ie `value([:integer, array[:integer])` (issue #214) (@solnic)
45
+ - You can now set global config via `Dry::Schema.config` (issue #205) (@robhanlon22)
46
+ - Default error message for `:uuid_v4?` predicate (isssue #230) (@solnic)
47
+ - [experimental] you can compose schemas in the DSL using the standard logic operators (issue #231 closed via #245) (@solnic)
48
+ - Hash schema type can now be used with proper keys and predicates inferring. Constructor
49
+ and default types are explicitly not supported (@flash-gordon)
50
+ ```ruby
51
+ UserType = Dry::Types['hash'].schema(
52
+ name: 'string',
53
+ email: 'string'
54
+ )
55
+
56
+ Dry::Schema.define do
57
+ require(:user).hash(UserType)
58
+ end
59
+ ```
60
+ - `: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)
61
+ - `: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)
62
+
63
+ ### Fixed
64
+
65
+ - `maybe` macro in JSON schemas no longer converts empty strings to `nil`.
66
+ This was a bug in dry-types but your code may rely on this behavior. If you still
67
+ require this behavior, we recommend using a custom type (see Advanced -> Custom types in the docs) (@flash-gordon)
68
+ - YAML message backend no longer crashes when load_paths are empty (@robhanlon22)
69
+ - Callbacks can now be inherited from multiple parents (@skryukov)
70
+ - Callbacks work with nested schemas (issue #209) (@solnic)
71
+ - Custom type is respected when defining nested schemas (issue #174 closed via 263) (@solnic)
72
+ - Key map is properly inferred for maybe-hashes (issue #266 fixed via #269) (@solnic)
73
+
74
+ ### Changed
75
+
76
+ - `:i18n` message backend delegates interpolation and caching to `I18n` (issue #211) (@robhanlon22)
77
+ - Raise ArgumentError in DSL if parent DSL configs differ (@robhanlon22)
78
+ - (internal) `PredicateInferrer` was removed. `Dry::Types::PredicateInferrer` is a drop-in replacement (@flash-gordon)
79
+
80
+ [Compare v1.4.3...v1.5.0](https://github.com/dry-rb/dry-schema/compare/v1.4.3...v1.5.0)
81
+
82
+ ## 1.4.3 2020-01-08
83
+
84
+
85
+ ### Added
86
+
87
+ - Pattern matching for `Dry::Schema::Result` objects (@flash-gordon)
88
+ ```ruby
89
+ schema = Dry::Schema::Params { required(:name).filled }
90
+ case schema.('name' => 'John')
91
+ in name:
92
+ name # => 'John'
93
+ end
94
+ ```
95
+ Try it with monads!
96
+ - Shortcut for nested schemas in `value` and `maybe` macros (@waiting-for-dev)
97
+ ```ruby
98
+ Dry::Schema.Params do
99
+ required(:address).value(:hash) do
100
+ required(:city).filled
101
+ end
102
+ end
103
+ ```
104
+
105
+ ### Fixed
106
+
107
+ - Some keyword warnings that slipped into the previous release (@flash-gordon)
108
+
109
+
110
+ [Compare v1.4.2...v1.4.3](https://github.com/dry-rb/dry-schema/compare/v1.4.2...v1.4.3)
111
+
112
+ ## 1.4.2 2019-12-19
113
+
2
114
 
3
115
  ### Fixed
4
116
 
5
- * `I18n` messages backend supports procs as text properly (issue #208) (@robhanlon22)
6
- * `I18n` messages backend supports message meta-data (issue #210) (@robhanlon22)
7
- * Fixed keyword warnings from MRI 2.7.0 (@flash-gordon)
8
- * Array with a member works correctly with `maybe` (issue #206) (@solnic)
117
+ - `I18n` messages backend supports procs as text properly (issue #208) (@robhanlon22)
118
+ - `I18n` messages backend supports message meta-data (issue #210) (@robhanlon22)
119
+ - Fixed keyword warnings from MRI 2.7.0 (@flash-gordon)
120
+ - Array with a member works correctly with `maybe` (issue #206) (@solnic)
121
+
9
122
 
10
123
  [Compare v1.4.1...v1.4.2](https://github.com/dry-rb/dry-schema/compare/v1.4.1...v1.4.2)
11
124
 
12
- # 1.4.1 2019-10-08
125
+ ## 1.4.1 2019-10-08
126
+
13
127
 
14
128
  ### Fixed
15
129
 
16
130
  - Child schemas no longer mutate processing steps of their parent classes (@skryukov)
17
131
 
132
+
18
133
  [Compare v1.4.0...v1.4.1](https://github.com/dry-rb/dry-schema/compare/v1.4.0...v1.4.1)
19
134
 
20
- # 1.4.0 2019-10-08
135
+ ## 1.4.0 2019-10-08
136
+
21
137
 
22
138
  ### Added
23
139
 
24
140
  - Support for passing multiple parent schemas. They are inherited from left to right (@ianwhite)
25
141
 
26
- ```ruby
27
- Dry::Schema.define(parent: [parent_a, parent_b, parent_c]) do
28
- ...
29
- end
30
- ```
31
-
142
+ ```ruby
143
+ Dry::Schema.define(parent: [parent_a, parent_b, parent_c]) do
144
+ ...
145
+ end
146
+ ```
32
147
  - Improved error messages about missing translations (@skryukov)
33
148
  - [experimental] before/after callbacks for schema steps (@skryukov)
34
149
 
@@ -47,17 +162,21 @@
47
162
 
48
163
  - Added/fixed support for custom optional types (@flash-gordon)
49
164
 
165
+
50
166
  [Compare v1.3.4...v1.4.0](https://github.com/dry-rb/dry-schema/compare/v1.3.4...v1.4.0)
51
167
 
52
- # 1.3.4 2019-09-11
168
+ ## 1.3.4 2019-09-11
169
+
53
170
 
54
171
  ### Fixed
55
172
 
56
173
  - Fixed regression where using `array?` predicate within a block would crach (issue #186) (@skryukov)
57
174
 
175
+
58
176
  [Compare v1.3.3...v1.3.4](https://github.com/dry-rb/dry-schema/compare/v1.3.3...v1.3.4)
59
177
 
60
- # 1.3.3 2019-08-14
178
+ ## 1.3.3 2019-08-14
179
+
61
180
 
62
181
  ### Fixed
63
182
 
@@ -66,68 +185,75 @@
66
185
  - Default processor uses strict types by default, which fixes various cases when `maybe` is used with a constructor type (@flash-gordon)
67
186
  - Namespaced messages no longer causes a crash when used with nested schemas (fixed #176) (@solnic)
68
187
 
188
+
69
189
  [Compare v1.3.2...v1.3.3](https://github.com/dry-rb/dry-schema/compare/v1.3.2...v1.3.3)
70
190
 
71
- # 1.3.2 2019-08-01
191
+ ## 1.3.2 2019-08-01
192
+
72
193
 
73
194
  ### Added
74
195
 
75
196
  - Support for new predicates: `bytesize?`, `min_bytesize?` and `max_bytesize?` (@bmalinconico)
76
197
 
198
+
77
199
  [Compare v1.3.1...v1.3.2](https://github.com/dry-rb/dry-schema/compare/v1.3.1...v1.3.2)
78
200
 
79
- # 1.3.1 2019-07-08
201
+ ## 1.3.1 2019-07-08
202
+
80
203
 
81
204
  ### Fixed
82
205
 
83
206
  - `Result#error?` works correctly with nested hashes and arrays (@solnic)
84
207
  - `:hints` extension no longer causes a crash where base messages are generated too (issue #165) (@solnic)
85
208
 
209
+
86
210
  [Compare v1.3.0...v1.3.1](https://github.com/dry-rb/dry-schema/compare/v1.3.0...v1.3.1)
87
211
 
88
- # 1.3.0 2019-07-06
212
+ ## 1.3.0 2019-07-06
213
+
89
214
 
90
215
  ### Added
91
216
 
92
217
  - Automatic predicate inferring for constrained types! (@flash-gordon)
93
218
 
94
- ```ruby
95
- Types::Name = Types::String.constrained(min_size: 1)
96
-
97
- schema = Dry::Schema.define do
98
- required(:name).value(Types::Name)
99
- end
219
+ ```ruby
220
+ Types::Name = Types::String.constrained(min_size: 1)
100
221
 
101
- schema.(name: '').errors.to_h # => { name: ["size cannot be less than 1"] }
102
- ```
222
+ schema = Dry::Schema.define do
223
+ required(:name).value(Types::Name)
224
+ end
103
225
 
226
+ schema.(name: '').errors.to_h # => { name: ["size cannot be less than 1"] }
227
+ ```
104
228
  - Support for redefining re-used schemas (issue #43) (@skryukov)
105
229
 
106
230
  ### Fixed
107
231
 
108
232
  - Type container is passed down to nested schemas (@flash-gordon)
109
233
 
234
+
110
235
  [Compare v1.2.0...v1.3.0](https://github.com/dry-rb/dry-schema/compare/v1.2.0...v1.3.0)
111
236
 
112
- # v1.2.0 2019-06-13
237
+ ## 1.2.0 2019-06-13
238
+
113
239
 
114
240
  ### Added
115
241
 
116
242
  - Ability to configure your own type container (@Morozzzko)
117
243
 
118
- ```ruby
119
- types = Dry::Schema::TypeContainer.new
120
- types.register(
121
- 'params.trimmed_string',
122
- Types::String.constructor(&:strip).constructor(&:downcase)
123
- )
244
+ ```ruby
245
+ types = Dry::Schema::TypeContainer.new
246
+ types.register(
247
+ 'params.trimmed_string',
248
+ Types::String.constructor(&:strip).constructor(&:downcase)
249
+ )
124
250
 
125
- Dry::Schema.Params do
126
- config.types = types
251
+ Dry::Schema.Params do
252
+ config.types = types
127
253
 
128
- require(:name).value(:trimmed_string)
129
- end
130
- ```
254
+ require(:name).value(:trimmed_string)
255
+ end
256
+ ```
131
257
 
132
258
  ### Fixed
133
259
 
@@ -145,7 +271,8 @@
145
271
 
146
272
  [Compare v1.1.0...v1.2.0](https://github.com/dry-rb/dry-schema/compare/v1.1.0...v1.2.0)
147
273
 
148
- # v1.1.0 2019-05-30
274
+ ## 1.1.0 2019-05-30
275
+
149
276
 
150
277
  ### Added
151
278
 
@@ -162,9 +289,11 @@
162
289
  - `Config#eql?` works as expected (@solnic)
163
290
  - Predicates are properly inferred from array with a member type spec, ie `array[:integer]` results in `array? + each(:integer?)` (issue #140) (@solnic)
164
291
 
292
+
165
293
  [Compare v1.0.3...v1.1.0](https://github.com/dry-rb/dry-schema/compare/v1.0.3...v1.1.0)
166
294
 
167
- # v1.0.3 2019-05-21
295
+ ## 1.0.3 2019-05-21
296
+
168
297
 
169
298
  ### Fixed
170
299
 
@@ -172,38 +301,45 @@
172
301
  - Predicate arguments are used again for template cache keys (@solnic)
173
302
  - `I18n` messages backend no longer evaluates templates twice (@solnic)
174
303
 
304
+
175
305
  [Compare v1.0.2...v1.0.3](https://github.com/dry-rb/dry-schema/compare/v1.0.2...v1.0.3)
176
306
 
177
- # v1.0.2 2019-05-12
307
+ ## 1.0.2 2019-05-12
308
+
178
309
 
179
310
  ### Fixed
180
311
 
181
312
  - Caching message templates uses restricted set of known keys to calculate cache keys (issue #132) (@solnic)
182
313
 
314
+
183
315
  [Compare v1.0.1...v1.0.2](https://github.com/dry-rb/dry-schema/compare/v1.0.1...v1.0.2)
184
316
 
185
- # 1.0.1 2019-05-08
317
+ ## 1.0.1 2019-05-08
318
+
186
319
 
187
320
  ### Fixed
188
321
 
189
322
  - Applying `key?` predicate no longer causes recursive calls to `Result#errors` (issue #130) (@solnic)
190
323
 
324
+
191
325
  [Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-schema/compare/v1.0.0...v1.0.1)
192
326
 
193
- # 1.0.0 2019-05-03
327
+ ## 1.0.0 2019-05-03
194
328
 
195
- ### Changed
196
-
197
- - [BREAKING] `Result#to_hash` was removed (@solnic)
198
329
 
199
330
  ### Fixed
200
331
 
201
332
  - Setting `:any` as the type spec no longer crashes (@solnic)
202
333
  - `Result#error?` handles paths to array elements correctly (@solnic)
203
334
 
335
+ ### Changed
336
+
337
+ - [BREAKING] `Result#to_hash` was removed (@solnic)
338
+
204
339
  [Compare v0.6.0...v1.0.0](https://github.com/dry-rb/dry-schema/compare/v0.6.0...v1.0.0)
205
340
 
206
- # 0.6.0 2019-04-24
341
+ ## 0.6.0 2019-04-24
342
+
207
343
 
208
344
  ### Changed
209
345
 
@@ -213,42 +349,44 @@
213
349
 
214
350
  [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-schema/compare/v0.5.1...v0.6.0)
215
351
 
216
- # 0.5.1 2019-04-17
352
+ ## 0.5.1 2019-04-17
353
+
217
354
 
218
355
  ### Fixed
219
356
 
220
357
  - Key map no longer crashes on unexpected input (issue #118) (@solnic)
221
358
 
359
+
222
360
  [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-schema/compare/v0.5.0...v0.5.1)
223
361
 
224
- # 0.5.0 2019-04-04
362
+ ## 0.5.0 2019-04-04
363
+
225
364
 
226
365
  ### Added
227
366
 
228
367
  - Support for arbitrary meta-data in messages, ie:
229
368
 
230
- ```yaml
231
- en:
232
- dry_schema:
233
- errors:
234
- filled?:
235
- text: "cannot be blank"
236
- code: 123
237
- ```
238
-
239
- Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (@solnic + @flash-gordon)
369
+ ```yaml
370
+ en:
371
+ dry_schema:
372
+ errors:
373
+ filled?:
374
+ text: "cannot be blank"
375
+ code: 123
376
+ ```
240
377
 
378
+ Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (@solnic + @flash-gordon)
241
379
  - Support for type specs in `array` macro, ie `required(:tags).array(:integer)` (@solnic)
242
380
  - Support for type specs in `each` macro, ie `required(:tags).each(:integer)` (@solnic)
243
381
  - Shortcut for defining an array with hash as its member, ie:
244
382
 
245
- ```ruby
246
- Dry::Schema.Params do
247
- required(:tags).array(:hash) do
248
- required(:name).filled(:string)
249
- end
250
- end
251
- ```
383
+ ```ruby
384
+ Dry::Schema.Params do
385
+ required(:tags).array(:hash) do
386
+ required(:name).filled(:string)
387
+ end
388
+ end
389
+ ```
252
390
 
253
391
  ### Fixed
254
392
 
@@ -262,7 +400,8 @@
262
400
 
263
401
  [Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-schema/compare/v0.4.0...v0.5.0)
264
402
 
265
- # 0.4.0 2019-03-26
403
+ ## 0.4.0 2019-03-26
404
+
266
405
 
267
406
  ### Added
268
407
 
@@ -284,16 +423,17 @@
284
423
  - [BREAKING] `Messages` backend classes no longer use global configuration (@solnic)
285
424
  - [BREAKING] Passing a non-symbol key name in the DSL will raise `ArgumentError` (issue #29) (@solnic)
286
425
  - [BREAKING] Configuration for message backends is now nested under `messages` key with following settings:
287
- - `messages.backend` - previously `messages`
288
- - `messages.load_paths` - previously `messages_path`
289
- - `messages.namespace` - previously `namespace`
290
- - `messages.top_namespace` - **new setting** see above
426
+ - `messages.backend` - previously `messages`
427
+ - `messages.load_paths` - previously `messages_path`
428
+ - `messages.namespace` - previously `namespace`
429
+ - `messages.top_namespace` - **new setting** see above
291
430
  - [BREAKING] `Messages::I18n` uses `I18.store_translations` instead of messing with `I18n.load_path` (@solnic)
292
431
  - Schemas (`Params` and `JSON`) have nicer inspect (@solnic)
293
432
 
294
433
  [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-schema/compare/v0.3.0...v0.4.0)
295
434
 
296
- # 0.3.0 2018-03-04
435
+ ## 0.3.0 2018-03-04
436
+
297
437
 
298
438
  ### Fixed
299
439
 
@@ -310,7 +450,8 @@
310
450
 
311
451
  [Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-schema/compare/v0.2.0...v0.3.0)
312
452
 
313
- # 0.2.0 2019-02-26
453
+ ## 0.2.0 2019-02-26
454
+
314
455
 
315
456
  ### Added
316
457
 
@@ -339,7 +480,8 @@
339
480
 
340
481
  [Compare v0.1.1...v0.2.0](https://github.com/dry-rb/dry-schema/compare/v0.1.1...v0.2.0)
341
482
 
342
- # 0.1.1 2019-02-17
483
+ ## 0.1.1 2019-02-17
484
+
343
485
 
344
486
  ### Added
345
487
 
@@ -350,12 +492,9 @@
350
492
  - Fix issues with templates and invalid tokens (issue #27) (@solnic)
351
493
  - Fix Ruby warnings (@flash-gordon)
352
494
 
353
- ### Internal
354
-
355
- - Key and value coercers are now equalizable (@flash-gordon)
356
495
 
357
496
  [Compare v0.1.0...v0.1.1](https://github.com/dry-rb/dry-schema/compare/v0.1.0...v0.1.1)
358
497
 
359
- # 0.1.0 2019-01-30
498
+ ## 0.1.0 2019-01-30
360
499
 
361
500
  Initial release.