dry-types 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2df871ef8f32a388ed641c5025ab9838a090f460
4
- data.tar.gz: 2766ba15e0358b3ac14b30cbb3027c8887fa609d
3
+ metadata.gz: 9f7f3d17e795bd1fc9393df39d6388e47f20abd5
4
+ data.tar.gz: caaa567b13b3806de44c36daa5f30d41579c6405
5
5
  SHA512:
6
- metadata.gz: 83951c294c86aeeb1bed5ed85bb8e28b6e898ff72170b246012494d892ae9fb19a3d60ed635348e0e45d5048290f7d5bc8c2c0976bd0e42cebc13648537c19c9
7
- data.tar.gz: 6a09c6f25ab11725d0c18adffb72eb93d3be87cffba4bb40bdd259a55dd3427953dc1026857540f8b83e0c8099c6748893bbbe9b1bca5dd536a95f7a4bc07836
6
+ metadata.gz: 2161c43f4f094bf12e4d5e2e64cd4d48b5a517ff1a3293a25bfda045bbfbe1fe1d7816d4f736e5273dbb4516947aa5342d854d8bab33c634f4c236ed9203e410
7
+ data.tar.gz: 806dfa70f3950020943c46ee415710d2dc4e45355d3b087bbb8b2c33e6259bca1745a9400dd2f0c4b6f1df4c2d46427d8c02550540ce14e6aa1b2bc691dbd8fa
data/.travis.yml CHANGED
@@ -20,7 +20,6 @@ env:
20
20
  matrix:
21
21
  allow_failures:
22
22
  - rvm: rbx-3
23
- - rvm: jruby-9.1.8.0
24
23
  notifications:
25
24
  email: false
26
25
  webhooks:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # v0.10.1 2017-04-28
2
+
3
+ ## Added
4
+
5
+ * `Type#optional?` returns true if type is Sum and left is nil (GustavoCaso)
6
+ * `Type#pristine` returns a type without `meta` (flash-gordon)
7
+
8
+ ## Fixed
9
+
10
+ * `meta` is used in type equality again (solnic)
11
+ * `Any` works correctly with meta again (flash-gordon)
12
+
13
+ [Compare v0.10.0...v0.10.1](https://github.com/dry-rb/dry-types/compare/v0.10.0...v0.10.1)
14
+
1
15
  # v0.10.0 2017-04-26
2
16
 
3
17
  ## Added
@@ -13,7 +27,7 @@
13
27
  * Meta data are now stored separately from options (flash-gordon)
14
28
  * `Types::Object` was renamed to `Types::Any` (flash-gordon)
15
29
 
16
- [Compare v0.9.4...v0.10.0](https://github.com/dryrb/dry-types/compare/v0.9.4...v0.10.0)
30
+ [Compare v0.9.4...v0.10.0](https://github.com/dry-rb/dry-types/compare/v0.9.4...v0.10.0)
17
31
 
18
32
  # v0.9.4 2017-01-24
19
33
 
@@ -21,7 +35,7 @@
21
35
 
22
36
  * Added `Types::Object` which passes an object of any type (flash-gordon)
23
37
 
24
- [Compare v0.9.3...v0.9.4](https://github.com/dryrb/dry-types/compare/v0.9.3...v0.9.4)
38
+ [Compare v0.9.3...v0.9.4](https://github.com/dry-rb/dry-types/compare/v0.9.3...v0.9.4)
25
39
 
26
40
  # v0.9.3 2016-12-03
27
41
 
@@ -29,7 +43,7 @@
29
43
 
30
44
  * Updated to dry-core >= 0.2.1 (ruby warnings are gone) (flash-gordon)
31
45
 
32
- [Compare v0.9.2...v0.9.3](https://github.com/dryrb/dry-types/compare/v0.9.2...v0.9.3)
46
+ [Compare v0.9.2...v0.9.3](https://github.com/dry-rb/dry-types/compare/v0.9.2...v0.9.3)
33
47
 
34
48
  # v0.9.2 2016-11-13
35
49
 
@@ -41,7 +55,7 @@
41
55
 
42
56
  * Optimized object allocation in hash schemas, resulting in up to 25% speed boost (davydovanton)
43
57
 
44
- [Compare v0.9.1...v0.9.2](https://github.com/dryrb/dry-types/compare/v0.9.1...v0.9.2)
58
+ [Compare v0.9.1...v0.9.2](https://github.com/dry-rb/dry-types/compare/v0.9.1...v0.9.2)
45
59
 
46
60
  # v0.9.1 2016-11-04
47
61
 
@@ -53,7 +67,7 @@
53
67
 
54
68
  * `Hash#weak` accepts Hash-descendants again (solnic)
55
69
 
56
- [Compare v0.9.0...v0.9.1](https://github.com/dryrb/dry-types/compare/v0.9.0...v0.9.1)
70
+ [Compare v0.9.0...v0.9.1](https://github.com/dry-rb/dry-types/compare/v0.9.0...v0.9.1)
57
71
 
58
72
  # v0.9.0 2016-09-21
59
73
 
@@ -77,7 +91,7 @@
77
91
  * `Types::Form::{Date,DateTime,Time}` fail gracefully for invalid input (padde)
78
92
  * ice_nine dependency has been dropped as it was required by Struct only (flash-gordon)
79
93
 
80
- [Compare v0.8.1...v0.9.0](https://github.com/dryrb/dry-types/compare/v0.8.1...v0.9.0)
94
+ [Compare v0.8.1...v0.9.0](https://github.com/dry-rb/dry-types/compare/v0.8.1...v0.9.0)
81
95
 
82
96
  # v0.8.1 2016-07-13
83
97
 
@@ -86,7 +100,7 @@
86
100
  * Compiler no longer chokes on type nodes without args (solnic)
87
101
  * Removed `bin/console` from gem package (solnic)
88
102
 
89
- [Compare v0.8.0...v0.8.1](https://github.com/dryrb/dry-types/compare/v0.8.0...v0.8.1)
103
+ [Compare v0.8.0...v0.8.1](https://github.com/dry-rb/dry-types/compare/v0.8.0...v0.8.1)
90
104
 
91
105
  # v0.8.0 2016-07-01
92
106
 
@@ -106,7 +120,7 @@
106
120
  * `:symbolized` hash schema is now based on `:weak` schema (solnic)
107
121
  * `Struct::Value` instances are now **deeply frozen** via ice_nine (backus)
108
122
 
109
- [Compare v0.7.2...v0.8.0](https://github.com/dryrb/dry-types/compare/v0.7.2...v0.8.0)
123
+ [Compare v0.7.2...v0.8.0](https://github.com/dry-rb/dry-types/compare/v0.7.2...v0.8.0)
110
124
 
111
125
  # v0.7.2 2016-05-11
112
126
 
@@ -125,7 +139,7 @@
125
139
  - Coerce empty strings in form posts to blank arrays and hashes (timriley)
126
140
  - update to use dry-logic v0.2.3 (fran-worley)
127
141
 
128
- [Compare v0.7.1...v0.7.2](https://github.com/dryrb/dry-types/compare/v0.7.1...v0.7.2)
142
+ [Compare v0.7.1...v0.7.2](https://github.com/dry-rb/dry-types/compare/v0.7.1...v0.7.2)
129
143
 
130
144
  # v0.7.1 2016-04-06
131
145
 
@@ -138,7 +152,7 @@
138
152
  - Schema is properly inherited in Struct (backus)
139
153
  - `constructor_type` is properly inherited in Struct (fbernier)
140
154
 
141
- [Compare v0.7.0...v0.7.1](https://github.com/dryrb/dry-types/compare/v0.7.0...v0.7.1)
155
+ [Compare v0.7.0...v0.7.1](https://github.com/dry-rb/dry-types/compare/v0.7.0...v0.7.1)
142
156
 
143
157
  # v0.7.0 2016-03-30
144
158
 
@@ -172,7 +186,7 @@ Major focus of this release is to make complex type composition possible and imp
172
186
  - `Type#default` will raise if `nil` was passed for `Maybe` type (solnic)
173
187
  - `Hash` with a schema will set maybe values for missing keys or nils (flash-gordon)
174
188
 
175
- [Compare v0.6.0...v0.7.0](https://github.com/dryrb/dry-types/compare/v0.6.0...v0.7.0)
189
+ [Compare v0.6.0...v0.7.0](https://github.com/dry-rb/dry-types/compare/v0.6.0...v0.7.0)
176
190
 
177
191
  # v0.6.0 2016-03-16
178
192
 
@@ -207,7 +221,7 @@ Renamed from `dry-data` to `dry-types` and:
207
221
  * `Dry::Types::Definition` is now the base type definition object (solnic)
208
222
  * `Dry::Types::Constructor` is now a type definition with a constructor function (solnic)
209
223
 
210
- [Compare v0.5.1...v0.6.0](https://github.com/dryrb/dry-types/compare/v0.5.1...v0.6.0)
224
+ [Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-types/compare/v0.5.1...v0.6.0)
211
225
 
212
226
  # v0.5.1 2016-01-11
213
227
 
@@ -217,7 +231,7 @@ Renamed from `dry-data` to `dry-types` and:
217
231
  not match input's class (solnic)
218
232
  * `form.array` and `form.hash` safe types (solnic)
219
233
 
220
- [Compare v0.5.0...v0.5.1](https://github.com/dryrb/dry-types/compare/v0.5.0...v0.5.1)
234
+ [Compare v0.5.0...v0.5.1](https://github.com/dry-rb/dry-types/compare/v0.5.0...v0.5.1)
221
235
 
222
236
  # v0.5.0 2016-01-11
223
237
 
@@ -238,7 +252,7 @@ Renamed from `dry-data` to `dry-types` and:
238
252
 
239
253
  * `attribute` raises proper error when type definition is missing (solnic)
240
254
 
241
- [Compare v0.4.2...v0.5.0](https://github.com/dryrb/dry-types/compare/v0.4.2...v0.5.0)
255
+ [Compare v0.4.2...v0.5.0](https://github.com/dry-rb/dry-types/compare/v0.4.2...v0.5.0)
242
256
 
243
257
  # v0.4.2 2015-12-27
244
258
 
@@ -250,7 +264,7 @@ Renamed from `dry-data` to `dry-types` and:
250
264
 
251
265
  * Array member uses type objects now rather than just their constructors (solnic)
252
266
 
253
- [Compare v0.4.1...v0.4.2](https://github.com/dryrb/dry-types/compare/v0.4.1...v0.4.2)
267
+ [Compare v0.4.1...v0.4.2](https://github.com/dry-rb/dry-types/compare/v0.4.1...v0.4.2)
254
268
 
255
269
  # v0.4.0 2015-12-11
256
270
 
@@ -263,7 +277,7 @@ Renamed from `dry-data` to `dry-types` and:
263
277
 
264
278
  * `Dry::Data['optional']` was **removed** in favor of `Dry::Data::Type#optional` (solnic)
265
279
 
266
- [Compare v0.3.2...v0.4.0](https://github.com/dryrb/dry-types/compare/v0.3.2...v0.4.0)
280
+ [Compare v0.3.2...v0.4.0](https://github.com/dry-rb/dry-types/compare/v0.3.2...v0.4.0)
267
281
 
268
282
  # v0.3.2 2015-12-10
269
283
 
@@ -275,7 +289,7 @@ Renamed from `dry-data` to `dry-types` and:
275
289
 
276
290
  * Added missing require for `dry-equalizer` (solnic)
277
291
 
278
- [Compare v0.3.1...v0.3.2](https://github.com/dryrb/dry-types/compare/v0.3.1...v0.3.2)
292
+ [Compare v0.3.1...v0.3.2](https://github.com/dry-rb/dry-types/compare/v0.3.1...v0.3.2)
279
293
 
280
294
  # v0.3.1 2015-12-09
281
295
 
@@ -283,7 +297,7 @@ Renamed from `dry-data` to `dry-types` and:
283
297
 
284
298
  * Removed require of constrained type and make it optional (solnic)
285
299
 
286
- [Compare v0.3.0...v0.3.1](https://github.com/dryrb/dry-types/compare/v0.3.0...v0.3.1)
300
+ [Compare v0.3.0...v0.3.1](https://github.com/dry-rb/dry-types/compare/v0.3.0...v0.3.1)
287
301
 
288
302
  # v0.3.0 2015-12-09
289
303
 
@@ -295,7 +309,7 @@ Renamed from `dry-data` to `dry-types` and:
295
309
  * `Dry::Data::Type#enum` for defining an enum from a specific type (solnic)
296
310
  * New types: `symbol` and `class` along with their `strict` versions (solnic)
297
311
 
298
- [Compare v0.2.1...v0.3.0](https://github.com/dryrb/dry-types/compare/v0.2.1...v0.3.0)
312
+ [Compare v0.2.1...v0.3.0](https://github.com/dry-rb/dry-types/compare/v0.2.1...v0.3.0)
299
313
 
300
314
  # v0.2.1 2015-11-30
301
315
 
@@ -311,7 +325,7 @@ Renamed from `dry-data` to `dry-types` and:
311
325
 
312
326
  * Improved structure of the ast (solnic)
313
327
 
314
- [Compare v0.2.0...v0.2.1](https://github.com/dryrb/dry-types/compare/v0.2.0...v0.2.1)
328
+ [Compare v0.2.0...v0.2.1](https://github.com/dry-rb/dry-types/compare/v0.2.0...v0.2.1)
315
329
 
316
330
  # v0.2.0 2015-11-29
317
331
 
@@ -325,7 +339,7 @@ Renamed from `dry-data` to `dry-types` and:
325
339
 
326
340
  * Constructing optional types uses the new `Dry::Data["optional"]` built-in type (solnic)
327
341
 
328
- [Compare v0.1.0...v0.2.0](https://github.com/dryrb/dry-types/compare/v0.1.0...v0.2.0)
342
+ [Compare v0.1.0...v0.2.0](https://github.com/dry-rb/dry-types/compare/v0.1.0...v0.2.0)
329
343
 
330
344
  # v0.1.0 2015-11-27
331
345
 
@@ -338,7 +352,7 @@ Renamed from `dry-data` to `dry-types` and:
338
352
  setting its `.new` method as the constructor (solnic)
339
353
  * `Dry::Data::Compiler` for building a type from a simple ast (solnic)
340
354
 
341
- [Compare v0.0.1...HEAD](https://github.com/dryrb/dry-types/compare/v0.0.1...HEAD)
355
+ [Compare v0.0.1...HEAD](https://github.com/dry-rb/dry-types/compare/v0.0.1...HEAD)
342
356
 
343
357
  # v0.0.1 2015-10-05
344
358
 
data/lib/dry/types/any.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Dry
2
2
  module Types
3
3
  Any = Class.new(Definition) do
4
- def initialize
5
- super(::Object)
4
+ def initialize(**options)
5
+ super(::Object, options)
6
6
  end
7
7
 
8
8
  # @return [String]
@@ -15,6 +15,12 @@ module Dry
15
15
  def valid?(_)
16
16
  true
17
17
  end
18
+
19
+ # @param [Hash] new_options
20
+ # @return [Type]
21
+ def with(new_options)
22
+ self.class.new(**options, meta: @meta, **new_options)
23
+ end
18
24
  end.new
19
25
  end
20
26
  end
@@ -6,7 +6,7 @@ module Dry
6
6
  module Types
7
7
  class Definition
8
8
  include Type
9
- include Dry::Equalizer(:primitive, :options)
9
+ include Dry::Equalizer(:primitive, :options, :meta)
10
10
  include Options
11
11
  include Builder
12
12
 
@@ -51,6 +51,11 @@ module Dry
51
51
  false
52
52
  end
53
53
 
54
+ # @return [false]
55
+ def optional?
56
+ false
57
+ end
58
+
54
59
  # @param [BasicObject] input
55
60
  # @return [BasicObject]
56
61
  def call(input)
@@ -26,6 +26,12 @@ module Dry
26
26
  def meta(data = nil)
27
27
  data ? with(meta: @meta.merge(data)) : @meta
28
28
  end
29
+
30
+ # Resets meta
31
+ # @return [Dry::Types::Type]
32
+ def pristine
33
+ with(meta: EMPTY_HASH)
34
+ end
29
35
  end
30
36
  end
31
37
  end
data/lib/dry/types/sum.rb CHANGED
@@ -4,7 +4,7 @@ module Dry
4
4
  module Types
5
5
  class Sum
6
6
  include Type
7
- include Dry::Equalizer(:left, :right, :options)
7
+ include Dry::Equalizer(:left, :right, :options, :meta)
8
8
  include Builder
9
9
  include Options
10
10
 
@@ -25,6 +25,11 @@ module Dry
25
25
  true
26
26
  end
27
27
 
28
+ # @return [Boolean]
29
+ def optional?
30
+ left.primitive == NilClass
31
+ end
32
+
28
33
  # @param [Object] input
29
34
  # @return [Object]
30
35
  # @raise [ConstraintError] if given +input+ not passing {#try}
@@ -65,6 +70,11 @@ module Dry
65
70
  false
66
71
  end
67
72
 
73
+ # @return [Boolean]
74
+ def optional?
75
+ left.primitive == NilClass
76
+ end
77
+
68
78
  # @param [Object] input
69
79
  # @return [Object]
70
80
  def call(input)
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Types
3
- VERSION = '0.10.0'.freeze
3
+ VERSION = '0.10.1'.freeze
4
4
  end
5
5
  end
@@ -32,6 +32,12 @@ RSpec.shared_examples_for 'Dry::Types::Definition without primitive' do
32
32
  expect(type).to eq(type)
33
33
  end
34
34
  end
35
+
36
+ describe '#optional?' do
37
+ it 'returns a boolean value' do
38
+ expect(type.optional?).to be_boolean
39
+ end
40
+ end
35
41
  end
36
42
 
37
43
  RSpec.shared_examples_for 'Dry::Types::Definition#meta' do
@@ -43,9 +49,18 @@ RSpec.shared_examples_for 'Dry::Types::Definition#meta' do
43
49
  expect(with_meta.meta).to eql(foo: :bar, baz: '1')
44
50
  end
45
51
 
46
- it "doesn't use meta in equality checks" do
47
- expect(type.meta(foo: :bar)).to eql(type)
48
- expect(type.meta(foo: :bar).hash).to eql(type.hash)
52
+ it 'equalizes on empty meta' do
53
+ expect(type).to eql(type.meta({}))
54
+ end
55
+
56
+ it 'equalizes on filled meta' do
57
+ expect(type).to_not eql(type.meta(i_am: 'different'))
58
+ end
59
+ end
60
+
61
+ describe '#pristine' do
62
+ it 'erases meta' do
63
+ expect(type.meta(foo: :bar).pristine).to eql(type)
49
64
  end
50
65
  end
51
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-26 00:00:00.000000000 Z
11
+ date: 2017-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby