dry-schema 1.4.2 → 1.5.3

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