dry-schema 1.4.1 → 1.5.2

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