dry-types 0.13.2 → 1.5.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +763 -233
- data/LICENSE +17 -17
- data/README.md +15 -13
- data/dry-types.gemspec +28 -28
- data/lib/dry-types.rb +3 -1
- data/lib/dry/types.rb +156 -76
- data/lib/dry/types/any.rb +32 -12
- data/lib/dry/types/array.rb +19 -6
- data/lib/dry/types/array/constructor.rb +32 -0
- data/lib/dry/types/array/member.rb +75 -16
- data/lib/dry/types/builder.rb +131 -15
- data/lib/dry/types/builder_methods.rb +49 -20
- data/lib/dry/types/coercions.rb +76 -22
- data/lib/dry/types/coercions/json.rb +43 -7
- data/lib/dry/types/coercions/params.rb +118 -31
- data/lib/dry/types/compat.rb +0 -2
- data/lib/dry/types/compiler.rb +56 -41
- data/lib/dry/types/constrained.rb +81 -32
- data/lib/dry/types/constrained/coercible.rb +36 -6
- data/lib/dry/types/constraints.rb +18 -4
- data/lib/dry/types/constructor.rb +127 -54
- data/lib/dry/types/constructor/function.rb +216 -0
- data/lib/dry/types/constructor/wrapper.rb +94 -0
- data/lib/dry/types/container.rb +7 -0
- data/lib/dry/types/core.rb +54 -21
- data/lib/dry/types/decorator.rb +38 -17
- data/lib/dry/types/default.rb +61 -16
- data/lib/dry/types/enum.rb +43 -20
- data/lib/dry/types/errors.rb +75 -9
- data/lib/dry/types/extensions.rb +7 -1
- data/lib/dry/types/extensions/maybe.rb +74 -16
- data/lib/dry/types/extensions/monads.rb +29 -0
- data/lib/dry/types/fn_container.rb +6 -1
- data/lib/dry/types/hash.rb +86 -67
- data/lib/dry/types/hash/constructor.rb +33 -0
- data/lib/dry/types/inflector.rb +3 -1
- data/lib/dry/types/json.rb +18 -16
- data/lib/dry/types/lax.rb +75 -0
- data/lib/dry/types/map.rb +76 -33
- data/lib/dry/types/meta.rb +51 -0
- data/lib/dry/types/module.rb +120 -0
- data/lib/dry/types/nominal.rb +210 -0
- data/lib/dry/types/options.rb +13 -26
- data/lib/dry/types/params.rb +39 -25
- data/lib/dry/types/predicate_inferrer.rb +238 -0
- data/lib/dry/types/predicate_registry.rb +34 -0
- data/lib/dry/types/primitive_inferrer.rb +97 -0
- data/lib/dry/types/printable.rb +16 -0
- data/lib/dry/types/printer.rb +315 -0
- data/lib/dry/types/result.rb +29 -3
- data/lib/dry/types/schema.rb +408 -0
- data/lib/dry/types/schema/key.rb +156 -0
- data/lib/dry/types/spec/types.rb +103 -33
- data/lib/dry/types/sum.rb +84 -35
- data/lib/dry/types/type.rb +49 -0
- data/lib/dry/types/version.rb +3 -1
- metadata +68 -79
- data/.gitignore +0 -10
- data/.rspec +0 -2
- data/.travis.yml +0 -29
- data/.yardopts +0 -5
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -24
- data/Rakefile +0 -20
- data/benchmarks/hash_schemas.rb +0 -51
- data/lib/dry/types/compat/form_types.rb +0 -27
- data/lib/dry/types/compat/int.rb +0 -14
- data/lib/dry/types/definition.rb +0 -113
- data/lib/dry/types/hash/schema.rb +0 -199
- data/lib/dry/types/hash/schema_builder.rb +0 -75
- data/lib/dry/types/safe.rb +0 -59
data/lib/dry/types/type.rb
CHANGED
@@ -1,6 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/core/deprecations"
|
4
|
+
|
1
5
|
module Dry
|
2
6
|
module Types
|
7
|
+
# Common Type module denoting an object is a Type
|
8
|
+
#
|
9
|
+
# @api public
|
3
10
|
module Type
|
11
|
+
extend ::Dry::Core::Deprecations[:'dry-types']
|
12
|
+
|
13
|
+
deprecate(:safe, :lax)
|
14
|
+
|
15
|
+
# Whether a value is a valid member of the type
|
16
|
+
#
|
17
|
+
# @return [Boolean]
|
18
|
+
#
|
19
|
+
# @api private
|
20
|
+
def valid?(input = Undefined)
|
21
|
+
call_safe(input) { return false }
|
22
|
+
true
|
23
|
+
end
|
24
|
+
# Anything can be coerced matches
|
25
|
+
alias_method :===, :valid?
|
26
|
+
|
27
|
+
# Apply type to a value
|
28
|
+
#
|
29
|
+
# @overload call(input = Undefined)
|
30
|
+
# Possibly unsafe coercion attempt. If a value doesn't
|
31
|
+
# match the type, an exception will be raised.
|
32
|
+
#
|
33
|
+
# @param [Object] input
|
34
|
+
# @return [Object]
|
35
|
+
#
|
36
|
+
# @overload call(input = Undefined)
|
37
|
+
# When a block is passed, {#call} will never throw an exception on
|
38
|
+
# failed coercion, instead it will call the block.
|
39
|
+
#
|
40
|
+
# @param [Object] input
|
41
|
+
# @yieldparam [Object] output Partially coerced value
|
42
|
+
# @return [Object]
|
43
|
+
#
|
44
|
+
# @api public
|
45
|
+
def call(input = Undefined, &block)
|
46
|
+
if block_given?
|
47
|
+
call_safe(input, &block)
|
48
|
+
else
|
49
|
+
call_unsafe(input)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
alias_method :[], :call
|
4
53
|
end
|
5
54
|
end
|
6
55
|
end
|
data/lib/dry/types/version.rb
CHANGED
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:
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -25,187 +25,166 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: dry-
|
28
|
+
name: dry-container
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 0.4.4
|
33
|
+
version: '0.3'
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: '0.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.4.4
|
40
|
+
version: '0.3'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name: dry-
|
42
|
+
name: dry-core
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
47
|
+
version: '0.5'
|
54
48
|
- - ">="
|
55
49
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
50
|
+
version: '0.5'
|
57
51
|
type: :runtime
|
58
52
|
prerelease: false
|
59
53
|
version_requirements: !ruby/object:Gem::Requirement
|
60
54
|
requirements:
|
61
55
|
- - "~>"
|
62
56
|
- !ruby/object:Gem::Version
|
63
|
-
version: '0.
|
57
|
+
version: '0.5'
|
64
58
|
- - ">="
|
65
59
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
60
|
+
version: '0.5'
|
67
61
|
- !ruby/object:Gem::Dependency
|
68
|
-
name: dry-
|
62
|
+
name: dry-inflector
|
69
63
|
requirement: !ruby/object:Gem::Requirement
|
70
64
|
requirements:
|
71
65
|
- - "~>"
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
74
|
-
|
75
|
-
prerelease: false
|
76
|
-
version_requirements: !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - "~>"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: '0.3'
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: dry-equalizer
|
83
|
-
requirement: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - "~>"
|
67
|
+
version: '0.1'
|
68
|
+
- - ">="
|
86
69
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
70
|
+
version: 0.1.2
|
88
71
|
type: :runtime
|
89
72
|
prerelease: false
|
90
73
|
version_requirements: !ruby/object:Gem::Requirement
|
91
74
|
requirements:
|
92
75
|
- - "~>"
|
93
76
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0.
|
77
|
+
version: '0.1'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 0.1.2
|
95
81
|
- !ruby/object:Gem::Dependency
|
96
82
|
name: dry-logic
|
97
83
|
requirement: !ruby/object:Gem::Requirement
|
98
84
|
requirements:
|
99
85
|
- - "~>"
|
100
86
|
- !ruby/object:Gem::Version
|
101
|
-
version: '0
|
87
|
+
version: '1.0'
|
102
88
|
- - ">="
|
103
89
|
- !ruby/object:Gem::Version
|
104
|
-
version: 0.
|
90
|
+
version: 1.0.2
|
105
91
|
type: :runtime
|
106
92
|
prerelease: false
|
107
93
|
version_requirements: !ruby/object:Gem::Requirement
|
108
94
|
requirements:
|
109
95
|
- - "~>"
|
110
96
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0
|
97
|
+
version: '1.0'
|
112
98
|
- - ">="
|
113
99
|
- !ruby/object:Gem::Version
|
114
|
-
version: 0.
|
100
|
+
version: 1.0.2
|
115
101
|
- !ruby/object:Gem::Dependency
|
116
102
|
name: bundler
|
117
103
|
requirement: !ruby/object:Gem::Requirement
|
118
104
|
requirements:
|
119
|
-
- - "
|
105
|
+
- - ">="
|
120
106
|
- !ruby/object:Gem::Version
|
121
|
-
version: '
|
107
|
+
version: '0'
|
122
108
|
type: :development
|
123
109
|
prerelease: false
|
124
110
|
version_requirements: !ruby/object:Gem::Requirement
|
125
111
|
requirements:
|
126
|
-
- - "
|
112
|
+
- - ">="
|
127
113
|
- !ruby/object:Gem::Version
|
128
|
-
version: '
|
114
|
+
version: '0'
|
129
115
|
- !ruby/object:Gem::Dependency
|
130
|
-
name:
|
116
|
+
name: dry-monads
|
131
117
|
requirement: !ruby/object:Gem::Requirement
|
132
118
|
requirements:
|
133
119
|
- - "~>"
|
134
120
|
- !ruby/object:Gem::Version
|
135
|
-
version: '
|
121
|
+
version: '1.0'
|
136
122
|
type: :development
|
137
123
|
prerelease: false
|
138
124
|
version_requirements: !ruby/object:Gem::Requirement
|
139
125
|
requirements:
|
140
126
|
- - "~>"
|
141
127
|
- !ruby/object:Gem::Version
|
142
|
-
version: '
|
128
|
+
version: '1.0'
|
143
129
|
- !ruby/object:Gem::Dependency
|
144
|
-
name:
|
130
|
+
name: rake
|
145
131
|
requirement: !ruby/object:Gem::Requirement
|
146
132
|
requirements:
|
147
|
-
- - "
|
133
|
+
- - ">="
|
148
134
|
- !ruby/object:Gem::Version
|
149
|
-
version: '
|
135
|
+
version: '0'
|
150
136
|
type: :development
|
151
137
|
prerelease: false
|
152
138
|
version_requirements: !ruby/object:Gem::Requirement
|
153
139
|
requirements:
|
154
|
-
- - "
|
140
|
+
- - ">="
|
155
141
|
- !ruby/object:Gem::Version
|
156
|
-
version: '
|
142
|
+
version: '0'
|
157
143
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
144
|
+
name: rspec
|
159
145
|
requirement: !ruby/object:Gem::Requirement
|
160
146
|
requirements:
|
161
|
-
- - "
|
147
|
+
- - ">="
|
162
148
|
- !ruby/object:Gem::Version
|
163
|
-
version: '0
|
149
|
+
version: '0'
|
164
150
|
type: :development
|
165
151
|
prerelease: false
|
166
152
|
version_requirements: !ruby/object:Gem::Requirement
|
167
153
|
requirements:
|
168
|
-
- - "
|
154
|
+
- - ">="
|
169
155
|
- !ruby/object:Gem::Version
|
170
|
-
version: '0
|
156
|
+
version: '0'
|
171
157
|
- !ruby/object:Gem::Dependency
|
172
158
|
name: yard
|
173
159
|
requirement: !ruby/object:Gem::Requirement
|
174
160
|
requirements:
|
175
|
-
- - "
|
161
|
+
- - ">="
|
176
162
|
- !ruby/object:Gem::Version
|
177
|
-
version: 0
|
163
|
+
version: '0'
|
178
164
|
type: :development
|
179
165
|
prerelease: false
|
180
166
|
version_requirements: !ruby/object:Gem::Requirement
|
181
167
|
requirements:
|
182
|
-
- - "
|
168
|
+
- - ">="
|
183
169
|
- !ruby/object:Gem::Version
|
184
|
-
version: 0
|
170
|
+
version: '0'
|
185
171
|
description: Type system for Ruby supporting coercions, constraints and complex types
|
186
|
-
like structs, value objects, enums etc
|
172
|
+
like structs, value objects, enums etc
|
187
173
|
email:
|
188
174
|
- piotr.solnica@gmail.com
|
189
175
|
executables: []
|
190
176
|
extensions: []
|
191
177
|
extra_rdoc_files: []
|
192
178
|
files:
|
193
|
-
- ".gitignore"
|
194
|
-
- ".rspec"
|
195
|
-
- ".travis.yml"
|
196
|
-
- ".yardopts"
|
197
179
|
- CHANGELOG.md
|
198
|
-
- CONTRIBUTING.md
|
199
|
-
- Gemfile
|
200
180
|
- LICENSE
|
201
181
|
- README.md
|
202
|
-
- Rakefile
|
203
|
-
- benchmarks/hash_schemas.rb
|
204
182
|
- dry-types.gemspec
|
205
183
|
- lib/dry-types.rb
|
206
184
|
- lib/dry/types.rb
|
207
185
|
- lib/dry/types/any.rb
|
208
186
|
- lib/dry/types/array.rb
|
187
|
+
- lib/dry/types/array/constructor.rb
|
209
188
|
- lib/dry/types/array/member.rb
|
210
189
|
- lib/dry/types/builder.rb
|
211
190
|
- lib/dry/types/builder_methods.rb
|
@@ -213,43 +192,54 @@ files:
|
|
213
192
|
- lib/dry/types/coercions/json.rb
|
214
193
|
- lib/dry/types/coercions/params.rb
|
215
194
|
- lib/dry/types/compat.rb
|
216
|
-
- lib/dry/types/compat/form_types.rb
|
217
|
-
- lib/dry/types/compat/int.rb
|
218
195
|
- lib/dry/types/compiler.rb
|
219
196
|
- lib/dry/types/constrained.rb
|
220
197
|
- lib/dry/types/constrained/coercible.rb
|
221
198
|
- lib/dry/types/constraints.rb
|
222
199
|
- lib/dry/types/constructor.rb
|
200
|
+
- lib/dry/types/constructor/function.rb
|
201
|
+
- lib/dry/types/constructor/wrapper.rb
|
223
202
|
- lib/dry/types/container.rb
|
224
203
|
- lib/dry/types/core.rb
|
225
204
|
- lib/dry/types/decorator.rb
|
226
205
|
- lib/dry/types/default.rb
|
227
|
-
- lib/dry/types/definition.rb
|
228
206
|
- lib/dry/types/enum.rb
|
229
207
|
- lib/dry/types/errors.rb
|
230
208
|
- lib/dry/types/extensions.rb
|
231
209
|
- lib/dry/types/extensions/maybe.rb
|
210
|
+
- lib/dry/types/extensions/monads.rb
|
232
211
|
- lib/dry/types/fn_container.rb
|
233
212
|
- lib/dry/types/hash.rb
|
234
|
-
- lib/dry/types/hash/
|
235
|
-
- lib/dry/types/hash/schema_builder.rb
|
213
|
+
- lib/dry/types/hash/constructor.rb
|
236
214
|
- lib/dry/types/inflector.rb
|
237
215
|
- lib/dry/types/json.rb
|
216
|
+
- lib/dry/types/lax.rb
|
238
217
|
- lib/dry/types/map.rb
|
218
|
+
- lib/dry/types/meta.rb
|
219
|
+
- lib/dry/types/module.rb
|
220
|
+
- lib/dry/types/nominal.rb
|
239
221
|
- lib/dry/types/options.rb
|
240
222
|
- lib/dry/types/params.rb
|
223
|
+
- lib/dry/types/predicate_inferrer.rb
|
224
|
+
- lib/dry/types/predicate_registry.rb
|
225
|
+
- lib/dry/types/primitive_inferrer.rb
|
226
|
+
- lib/dry/types/printable.rb
|
227
|
+
- lib/dry/types/printer.rb
|
241
228
|
- lib/dry/types/result.rb
|
242
|
-
- lib/dry/types/
|
229
|
+
- lib/dry/types/schema.rb
|
230
|
+
- lib/dry/types/schema/key.rb
|
243
231
|
- lib/dry/types/spec/types.rb
|
244
232
|
- lib/dry/types/sum.rb
|
245
233
|
- lib/dry/types/type.rb
|
246
234
|
- lib/dry/types/version.rb
|
247
|
-
-
|
248
|
-
homepage: https://github.com/dry-rb/dry-types
|
235
|
+
homepage: https://dry-rb.org/gems/dry-types
|
249
236
|
licenses:
|
250
237
|
- MIT
|
251
238
|
metadata:
|
252
239
|
allowed_push_host: https://rubygems.org
|
240
|
+
changelog_uri: https://github.com/dry-rb/dry-types/blob/master/CHANGELOG.md
|
241
|
+
source_code_uri: https://github.com/dry-rb/dry-types
|
242
|
+
bug_tracker_uri: https://github.com/dry-rb/dry-types/issues
|
253
243
|
post_install_message:
|
254
244
|
rdoc_options: []
|
255
245
|
require_paths:
|
@@ -258,17 +248,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
258
248
|
requirements:
|
259
249
|
- - ">="
|
260
250
|
- !ruby/object:Gem::Version
|
261
|
-
version: 2.
|
251
|
+
version: 2.5.0
|
262
252
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
253
|
requirements:
|
264
254
|
- - ">="
|
265
255
|
- !ruby/object:Gem::Version
|
266
256
|
version: '0'
|
267
257
|
requirements: []
|
268
|
-
|
269
|
-
rubygems_version: 2.7.6
|
258
|
+
rubygems_version: 3.1.4
|
270
259
|
signing_key:
|
271
260
|
specification_version: 4
|
272
261
|
summary: Type system for Ruby supporting coercions, constraints and complex types
|
273
|
-
like structs, value objects, enums etc
|
262
|
+
like structs, value objects, enums etc
|
274
263
|
test_files: []
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.travis.yml
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
dist: trusty
|
3
|
-
sudo: required
|
4
|
-
cache: bundler
|
5
|
-
bundler_args: --without benchmarks tools
|
6
|
-
script:
|
7
|
-
- bundle exec rake
|
8
|
-
before_install:
|
9
|
-
- gem update --system
|
10
|
-
after_success:
|
11
|
-
- '[ -d coverage ] && bundle exec codeclimate-test-reporter'
|
12
|
-
rvm:
|
13
|
-
- 2.2.9
|
14
|
-
- 2.3.6
|
15
|
-
- 2.4.3
|
16
|
-
- 2.5.0
|
17
|
-
- jruby-9.1.15.0
|
18
|
-
env:
|
19
|
-
global:
|
20
|
-
- COVERAGE=true
|
21
|
-
- JRUBY_OPTS='--dev -J-Xmx1024M'
|
22
|
-
notifications:
|
23
|
-
email: false
|
24
|
-
webhooks:
|
25
|
-
urls:
|
26
|
-
- https://webhooks.gitter.im/e/19098b4253a72c9796db
|
27
|
-
on_success: change # options: [always|never|change] default: always
|
28
|
-
on_failure: always # options: [always|never|change] default: always
|
29
|
-
on_start: false # default: false
|