dry-schema 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +170 -97
  3. data/config/errors.yml +4 -0
  4. data/dry-schema.gemspec +46 -0
  5. data/lib/dry-schema.rb +1 -1
  6. data/lib/dry/schema.rb +19 -6
  7. data/lib/dry/schema/compiler.rb +4 -4
  8. data/lib/dry/schema/config.rb +15 -6
  9. data/lib/dry/schema/constants.rb +16 -7
  10. data/lib/dry/schema/dsl.rb +88 -27
  11. data/lib/dry/schema/extensions.rb +10 -2
  12. data/lib/dry/schema/extensions/hints.rb +15 -8
  13. data/lib/dry/schema/extensions/hints/message_compiler_methods.rb +1 -1
  14. data/lib/dry/schema/extensions/hints/message_set_methods.rb +0 -47
  15. data/lib/dry/schema/extensions/info.rb +27 -0
  16. data/lib/dry/schema/extensions/info/schema_compiler.rb +105 -0
  17. data/lib/dry/schema/extensions/monads.rb +1 -1
  18. data/lib/dry/schema/extensions/struct.rb +32 -0
  19. data/lib/dry/schema/json.rb +1 -1
  20. data/lib/dry/schema/key.rb +16 -1
  21. data/lib/dry/schema/key_coercer.rb +4 -4
  22. data/lib/dry/schema/key_map.rb +9 -4
  23. data/lib/dry/schema/key_validator.rb +66 -0
  24. data/lib/dry/schema/macros.rb +8 -8
  25. data/lib/dry/schema/macros/array.rb +17 -4
  26. data/lib/dry/schema/macros/core.rb +9 -4
  27. data/lib/dry/schema/macros/dsl.rb +34 -19
  28. data/lib/dry/schema/macros/each.rb +4 -4
  29. data/lib/dry/schema/macros/filled.rb +5 -5
  30. data/lib/dry/schema/macros/hash.rb +21 -3
  31. data/lib/dry/schema/macros/key.rb +9 -9
  32. data/lib/dry/schema/macros/maybe.rb +3 -3
  33. data/lib/dry/schema/macros/optional.rb +1 -1
  34. data/lib/dry/schema/macros/required.rb +1 -1
  35. data/lib/dry/schema/macros/schema.rb +23 -2
  36. data/lib/dry/schema/macros/value.rb +32 -10
  37. data/lib/dry/schema/message.rb +35 -9
  38. data/lib/dry/schema/message/or.rb +18 -39
  39. data/lib/dry/schema/message/or/abstract.rb +28 -0
  40. data/lib/dry/schema/message/or/multi_path.rb +37 -0
  41. data/lib/dry/schema/message/or/single_path.rb +64 -0
  42. data/lib/dry/schema/message_compiler.rb +37 -17
  43. data/lib/dry/schema/message_compiler/visitor_opts.rb +2 -2
  44. data/lib/dry/schema/message_set.rb +25 -36
  45. data/lib/dry/schema/messages.rb +6 -6
  46. data/lib/dry/schema/messages/abstract.rb +54 -56
  47. data/lib/dry/schema/messages/i18n.rb +29 -27
  48. data/lib/dry/schema/messages/namespaced.rb +12 -2
  49. data/lib/dry/schema/messages/template.rb +19 -44
  50. data/lib/dry/schema/messages/yaml.rb +60 -13
  51. data/lib/dry/schema/params.rb +1 -1
  52. data/lib/dry/schema/path.rb +44 -5
  53. data/lib/dry/schema/predicate.rb +2 -2
  54. data/lib/dry/schema/predicate_inferrer.rb +4 -184
  55. data/lib/dry/schema/predicate_registry.rb +2 -2
  56. data/lib/dry/schema/primitive_inferrer.rb +16 -0
  57. data/lib/dry/schema/processor.rb +49 -28
  58. data/lib/dry/schema/processor_steps.rb +50 -27
  59. data/lib/dry/schema/result.rb +43 -5
  60. data/lib/dry/schema/rule_applier.rb +8 -7
  61. data/lib/dry/schema/step.rb +79 -0
  62. data/lib/dry/schema/trace.rb +5 -4
  63. data/lib/dry/schema/type_container.rb +3 -3
  64. data/lib/dry/schema/type_registry.rb +2 -2
  65. data/lib/dry/schema/types.rb +1 -1
  66. data/lib/dry/schema/value_coercer.rb +2 -2
  67. data/lib/dry/schema/version.rb +1 -1
  68. metadata +22 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e079ef300d87844185052fe2a2c3e42230d29aefd409ec0acf6b9a45d3f296f5
4
- data.tar.gz: cf34b9651357525e874109f4533e8c23c2f682ca33ffe90da0e789037491cfe2
3
+ metadata.gz: 45a3441f7099ddd2ea6c0af6345f1fdcff20cf0629953dfc1eedcce5f8f54995
4
+ data.tar.gz: 841584478740cfc72a653e50445b9e3a16c01a6ce49b2c8c8375da76811ca50d
5
5
  SHA512:
6
- metadata.gz: 8bb4f328f94be77fcdeb4791c5227d694a93522880dbc7ed48684033e83f37ce62da9627820d2ba53606f231ac6e5add562a1d2cd502a851b8bab8415e748882
7
- data.tar.gz: 1866a985a5bc45eb84c8670c8b67b209fd3397f656a82080debcc7cfa8a29284e7de6528a1b662eeafd61f0bbe2094328401ede95f381be7c765322de782690d
6
+ metadata.gz: 368b80c79f2598dd4cf215c8223dbd704b75909857acf9fa51e60abed19ba3bdc2904ce5d7227ef7259b45593017131ce6ab5434ee3d713fe6b97eed643eecd8
7
+ data.tar.gz: 4f5ac8469feb749ed6ca95c022f99b822204d1b1cdde05969795571cabd43cd573111c86cfb4322413a22b5e99958156ba061a598c381989510ecf700fbfc7f0
@@ -1,62 +1,111 @@
1
- # 1.4.3 2020-01-08
1
+ ## 1.5.0 2020-03-11
2
+
2
3
 
3
4
  ### Added
4
5
 
5
- * Pattern matching for `Dry::Schema::Result` objects (@flash-gordon)
6
- ```ruby
7
- schema = Dry::Schema::Params { required(:name).filled }
8
- case schema.('name' => 'John')
9
- in name:
10
- name # => 'John'
11
- end
12
- ```
13
- Try it with monads!
14
- * Shortcut for nested schemas in `value` and `maybe` macros (@waiting-for-dev)
15
- ```ruby
16
- Dry::Schema.Params do
17
- required(:address).value(:hash) do
18
- required(:city).filled
19
- end
20
- end
21
- ```
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)
22
24
 
23
25
  ### Fixed
24
26
 
25
- * Some keyword warnings that slipped into the previous release (@flash-gordon)
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
+
26
71
 
27
72
  [Compare v1.4.2...v1.4.3](https://github.com/dry-rb/dry-schema/compare/v1.4.2...v1.4.3)
28
73
 
29
- # 1.4.2 2019-12-19
74
+ ## 1.4.2 2019-12-19
75
+
30
76
 
31
77
  ### Fixed
32
78
 
33
- * `I18n` messages backend supports procs as text properly (issue #208) (@robhanlon22)
34
- * `I18n` messages backend supports message meta-data (issue #210) (@robhanlon22)
35
- * Fixed keyword warnings from MRI 2.7.0 (@flash-gordon)
36
- * Array with a member works correctly with `maybe` (issue #206) (@solnic)
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
+
37
84
 
38
85
  [Compare v1.4.1...v1.4.2](https://github.com/dry-rb/dry-schema/compare/v1.4.1...v1.4.2)
39
86
 
40
- # 1.4.1 2019-10-08
87
+ ## 1.4.1 2019-10-08
88
+
41
89
 
42
90
  ### Fixed
43
91
 
44
92
  - Child schemas no longer mutate processing steps of their parent classes (@skryukov)
45
93
 
94
+
46
95
  [Compare v1.4.0...v1.4.1](https://github.com/dry-rb/dry-schema/compare/v1.4.0...v1.4.1)
47
96
 
48
- # 1.4.0 2019-10-08
97
+ ## 1.4.0 2019-10-08
98
+
49
99
 
50
100
  ### Added
51
101
 
52
102
  - Support for passing multiple parent schemas. They are inherited from left to right (@ianwhite)
53
103
 
54
- ```ruby
55
- Dry::Schema.define(parent: [parent_a, parent_b, parent_c]) do
56
- ...
57
- end
58
- ```
59
-
104
+ ```ruby
105
+ Dry::Schema.define(parent: [parent_a, parent_b, parent_c]) do
106
+ ...
107
+ end
108
+ ```
60
109
  - Improved error messages about missing translations (@skryukov)
61
110
  - [experimental] before/after callbacks for schema steps (@skryukov)
62
111
 
@@ -75,17 +124,21 @@
75
124
 
76
125
  - Added/fixed support for custom optional types (@flash-gordon)
77
126
 
127
+
78
128
  [Compare v1.3.4...v1.4.0](https://github.com/dry-rb/dry-schema/compare/v1.3.4...v1.4.0)
79
129
 
80
- # 1.3.4 2019-09-11
130
+ ## 1.3.4 2019-09-11
131
+
81
132
 
82
133
  ### Fixed
83
134
 
84
135
  - Fixed regression where using `array?` predicate within a block would crach (issue #186) (@skryukov)
85
136
 
137
+
86
138
  [Compare v1.3.3...v1.3.4](https://github.com/dry-rb/dry-schema/compare/v1.3.3...v1.3.4)
87
139
 
88
- # 1.3.3 2019-08-14
140
+ ## 1.3.3 2019-08-14
141
+
89
142
 
90
143
  ### Fixed
91
144
 
@@ -94,68 +147,75 @@
94
147
  - Default processor uses strict types by default, which fixes various cases when `maybe` is used with a constructor type (@flash-gordon)
95
148
  - Namespaced messages no longer causes a crash when used with nested schemas (fixed #176) (@solnic)
96
149
 
150
+
97
151
  [Compare v1.3.2...v1.3.3](https://github.com/dry-rb/dry-schema/compare/v1.3.2...v1.3.3)
98
152
 
99
- # 1.3.2 2019-08-01
153
+ ## 1.3.2 2019-08-01
154
+
100
155
 
101
156
  ### Added
102
157
 
103
158
  - Support for new predicates: `bytesize?`, `min_bytesize?` and `max_bytesize?` (@bmalinconico)
104
159
 
160
+
105
161
  [Compare v1.3.1...v1.3.2](https://github.com/dry-rb/dry-schema/compare/v1.3.1...v1.3.2)
106
162
 
107
- # 1.3.1 2019-07-08
163
+ ## 1.3.1 2019-07-08
164
+
108
165
 
109
166
  ### Fixed
110
167
 
111
168
  - `Result#error?` works correctly with nested hashes and arrays (@solnic)
112
169
  - `:hints` extension no longer causes a crash where base messages are generated too (issue #165) (@solnic)
113
170
 
171
+
114
172
  [Compare v1.3.0...v1.3.1](https://github.com/dry-rb/dry-schema/compare/v1.3.0...v1.3.1)
115
173
 
116
- # 1.3.0 2019-07-06
174
+ ## 1.3.0 2019-07-06
175
+
117
176
 
118
177
  ### Added
119
178
 
120
179
  - Automatic predicate inferring for constrained types! (@flash-gordon)
121
180
 
122
- ```ruby
123
- Types::Name = Types::String.constrained(min_size: 1)
124
-
125
- schema = Dry::Schema.define do
126
- required(:name).value(Types::Name)
127
- end
181
+ ```ruby
182
+ Types::Name = Types::String.constrained(min_size: 1)
128
183
 
129
- schema.(name: '').errors.to_h # => { name: ["size cannot be less than 1"] }
130
- ```
184
+ schema = Dry::Schema.define do
185
+ required(:name).value(Types::Name)
186
+ end
131
187
 
188
+ schema.(name: '').errors.to_h # => { name: ["size cannot be less than 1"] }
189
+ ```
132
190
  - Support for redefining re-used schemas (issue #43) (@skryukov)
133
191
 
134
192
  ### Fixed
135
193
 
136
194
  - Type container is passed down to nested schemas (@flash-gordon)
137
195
 
196
+
138
197
  [Compare v1.2.0...v1.3.0](https://github.com/dry-rb/dry-schema/compare/v1.2.0...v1.3.0)
139
198
 
140
- # v1.2.0 2019-06-13
199
+ ## 1.2.0 2019-06-13
200
+
141
201
 
142
202
  ### Added
143
203
 
144
204
  - Ability to configure your own type container (@Morozzzko)
145
205
 
146
- ```ruby
147
- types = Dry::Schema::TypeContainer.new
148
- types.register(
149
- 'params.trimmed_string',
150
- Types::String.constructor(&:strip).constructor(&:downcase)
151
- )
206
+ ```ruby
207
+ types = Dry::Schema::TypeContainer.new
208
+ types.register(
209
+ 'params.trimmed_string',
210
+ Types::String.constructor(&:strip).constructor(&:downcase)
211
+ )
152
212
 
153
- Dry::Schema.Params do
154
- config.types = types
213
+ Dry::Schema.Params do
214
+ config.types = types
155
215
 
156
- require(:name).value(:trimmed_string)
157
- end
158
- ```
216
+ require(:name).value(:trimmed_string)
217
+ end
218
+ ```
159
219
 
160
220
  ### Fixed
161
221
 
@@ -173,7 +233,8 @@
173
233
 
174
234
  [Compare v1.1.0...v1.2.0](https://github.com/dry-rb/dry-schema/compare/v1.1.0...v1.2.0)
175
235
 
176
- # v1.1.0 2019-05-30
236
+ ## 1.1.0 2019-05-30
237
+
177
238
 
178
239
  ### Added
179
240
 
@@ -190,9 +251,11 @@
190
251
  - `Config#eql?` works as expected (@solnic)
191
252
  - Predicates are properly inferred from array with a member type spec, ie `array[:integer]` results in `array? + each(:integer?)` (issue #140) (@solnic)
192
253
 
254
+
193
255
  [Compare v1.0.3...v1.1.0](https://github.com/dry-rb/dry-schema/compare/v1.0.3...v1.1.0)
194
256
 
195
- # v1.0.3 2019-05-21
257
+ ## 1.0.3 2019-05-21
258
+
196
259
 
197
260
  ### Fixed
198
261
 
@@ -200,38 +263,45 @@
200
263
  - Predicate arguments are used again for template cache keys (@solnic)
201
264
  - `I18n` messages backend no longer evaluates templates twice (@solnic)
202
265
 
266
+
203
267
  [Compare v1.0.2...v1.0.3](https://github.com/dry-rb/dry-schema/compare/v1.0.2...v1.0.3)
204
268
 
205
- # v1.0.2 2019-05-12
269
+ ## 1.0.2 2019-05-12
270
+
206
271
 
207
272
  ### Fixed
208
273
 
209
274
  - Caching message templates uses restricted set of known keys to calculate cache keys (issue #132) (@solnic)
210
275
 
276
+
211
277
  [Compare v1.0.1...v1.0.2](https://github.com/dry-rb/dry-schema/compare/v1.0.1...v1.0.2)
212
278
 
213
- # 1.0.1 2019-05-08
279
+ ## 1.0.1 2019-05-08
280
+
214
281
 
215
282
  ### Fixed
216
283
 
217
284
  - Applying `key?` predicate no longer causes recursive calls to `Result#errors` (issue #130) (@solnic)
218
285
 
286
+
219
287
  [Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-schema/compare/v1.0.0...v1.0.1)
220
288
 
221
- # 1.0.0 2019-05-03
289
+ ## 1.0.0 2019-05-03
222
290
 
223
- ### Changed
224
-
225
- - [BREAKING] `Result#to_hash` was removed (@solnic)
226
291
 
227
292
  ### Fixed
228
293
 
229
294
  - Setting `:any` as the type spec no longer crashes (@solnic)
230
295
  - `Result#error?` handles paths to array elements correctly (@solnic)
231
296
 
297
+ ### Changed
298
+
299
+ - [BREAKING] `Result#to_hash` was removed (@solnic)
300
+
232
301
  [Compare v0.6.0...v1.0.0](https://github.com/dry-rb/dry-schema/compare/v0.6.0...v1.0.0)
233
302
 
234
- # 0.6.0 2019-04-24
303
+ ## 0.6.0 2019-04-24
304
+
235
305
 
236
306
  ### Changed
237
307
 
@@ -241,42 +311,44 @@
241
311
 
242
312
  [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-schema/compare/v0.5.1...v0.6.0)
243
313
 
244
- # 0.5.1 2019-04-17
314
+ ## 0.5.1 2019-04-17
315
+
245
316
 
246
317
  ### Fixed
247
318
 
248
319
  - Key map no longer crashes on unexpected input (issue #118) (@solnic)
249
320
 
321
+
250
322
  [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-schema/compare/v0.5.0...v0.5.1)
251
323
 
252
- # 0.5.0 2019-04-04
324
+ ## 0.5.0 2019-04-04
325
+
253
326
 
254
327
  ### Added
255
328
 
256
329
  - Support for arbitrary meta-data in messages, ie:
257
330
 
258
- ```yaml
259
- en:
260
- dry_schema:
261
- errors:
262
- filled?:
263
- text: "cannot be blank"
264
- code: 123
265
- ```
266
-
267
- Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (@solnic + @flash-gordon)
331
+ ```yaml
332
+ en:
333
+ dry_schema:
334
+ errors:
335
+ filled?:
336
+ text: "cannot be blank"
337
+ code: 123
338
+ ```
268
339
 
340
+ Now your error hash will include `{ foo: [{ text: 'cannot be blank', code: 123 }] }` (@solnic + @flash-gordon)
269
341
  - Support for type specs in `array` macro, ie `required(:tags).array(:integer)` (@solnic)
270
342
  - Support for type specs in `each` macro, ie `required(:tags).each(:integer)` (@solnic)
271
343
  - Shortcut for defining an array with hash as its member, ie:
272
344
 
273
- ```ruby
274
- Dry::Schema.Params do
275
- required(:tags).array(:hash) do
276
- required(:name).filled(:string)
277
- end
278
- end
279
- ```
345
+ ```ruby
346
+ Dry::Schema.Params do
347
+ required(:tags).array(:hash) do
348
+ required(:name).filled(:string)
349
+ end
350
+ end
351
+ ```
280
352
 
281
353
  ### Fixed
282
354
 
@@ -290,7 +362,8 @@
290
362
 
291
363
  [Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-schema/compare/v0.4.0...v0.5.0)
292
364
 
293
- # 0.4.0 2019-03-26
365
+ ## 0.4.0 2019-03-26
366
+
294
367
 
295
368
  ### Added
296
369
 
@@ -312,16 +385,17 @@
312
385
  - [BREAKING] `Messages` backend classes no longer use global configuration (@solnic)
313
386
  - [BREAKING] Passing a non-symbol key name in the DSL will raise `ArgumentError` (issue #29) (@solnic)
314
387
  - [BREAKING] Configuration for message backends is now nested under `messages` key with following settings:
315
- - `messages.backend` - previously `messages`
316
- - `messages.load_paths` - previously `messages_path`
317
- - `messages.namespace` - previously `namespace`
318
- - `messages.top_namespace` - **new setting** see above
388
+ - `messages.backend` - previously `messages`
389
+ - `messages.load_paths` - previously `messages_path`
390
+ - `messages.namespace` - previously `namespace`
391
+ - `messages.top_namespace` - **new setting** see above
319
392
  - [BREAKING] `Messages::I18n` uses `I18.store_translations` instead of messing with `I18n.load_path` (@solnic)
320
393
  - Schemas (`Params` and `JSON`) have nicer inspect (@solnic)
321
394
 
322
395
  [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-schema/compare/v0.3.0...v0.4.0)
323
396
 
324
- # 0.3.0 2018-03-04
397
+ ## 0.3.0 2018-03-04
398
+
325
399
 
326
400
  ### Fixed
327
401
 
@@ -338,7 +412,8 @@
338
412
 
339
413
  [Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-schema/compare/v0.2.0...v0.3.0)
340
414
 
341
- # 0.2.0 2019-02-26
415
+ ## 0.2.0 2019-02-26
416
+
342
417
 
343
418
  ### Added
344
419
 
@@ -367,7 +442,8 @@
367
442
 
368
443
  [Compare v0.1.1...v0.2.0](https://github.com/dry-rb/dry-schema/compare/v0.1.1...v0.2.0)
369
444
 
370
- # 0.1.1 2019-02-17
445
+ ## 0.1.1 2019-02-17
446
+
371
447
 
372
448
  ### Added
373
449
 
@@ -378,12 +454,9 @@
378
454
  - Fix issues with templates and invalid tokens (issue #27) (@solnic)
379
455
  - Fix Ruby warnings (@flash-gordon)
380
456
 
381
- ### Internal
382
-
383
- - Key and value coercers are now equalizable (@flash-gordon)
384
457
 
385
458
  [Compare v0.1.0...v0.1.1](https://github.com/dry-rb/dry-schema/compare/v0.1.0...v0.1.1)
386
459
 
387
- # 0.1.0 2019-01-30
460
+ ## 0.1.0 2019-01-30
388
461
 
389
462
  Initial release.