dry-types 0.6.0

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.
@@ -0,0 +1,34 @@
1
+ module Dry
2
+ module Types
3
+ class Sum
4
+ include Builder
5
+
6
+ attr_reader :left
7
+
8
+ attr_reader :right
9
+
10
+ def initialize(left, right)
11
+ @left, @right = left, right
12
+ end
13
+
14
+ def name
15
+ [left, right].map(&:name).join(' | ')
16
+ end
17
+
18
+ def call(input)
19
+ value = left.try(input)
20
+
21
+ if left.valid?(value)
22
+ value
23
+ else
24
+ right[value]
25
+ end
26
+ end
27
+ alias_method :[], :call
28
+
29
+ def valid?(input)
30
+ left.valid?(input) || right.valid?(input)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'dry/types/struct'
2
+
3
+ module Dry
4
+ module Types
5
+ class Value < Struct
6
+ def self.inherited(klass)
7
+ super
8
+ klass.instance_variable_set('@equalizer', Equalizer.new)
9
+ klass.send(:include, klass.equalizer)
10
+ end
11
+
12
+ def self.attributes(*args)
13
+ super
14
+ equalizer.instance_variable_get('@keys').concat(schema.keys).uniq!
15
+ end
16
+
17
+ def self.equalizer
18
+ @equalizer
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ module Dry
2
+ module Types
3
+ VERSION = '0.6.0'.freeze
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dry-types
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ platform: ruby
6
+ authors:
7
+ - Piotr Solnica
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thread_safe
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-container
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dry-equalizer
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-configurable
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dry-logic
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.2'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.2.0
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '0.2'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 0.2.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: inflecto
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.0.0
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.0.2
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 0.0.0
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 0.0.2
109
+ - !ruby/object:Gem::Dependency
110
+ name: kleisli
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.2'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '0.2'
123
+ - !ruby/object:Gem::Dependency
124
+ name: bundler
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.7'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '1.7'
137
+ - !ruby/object:Gem::Dependency
138
+ name: rake
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '10.0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '10.0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rspec
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '3.3'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '3.3'
165
+ description: Type system for Ruby supporting coercions, constraints and complex types
166
+ like structs, value objects, enums etc.
167
+ email:
168
+ - piotr.solnica@gmail.com
169
+ executables: []
170
+ extensions: []
171
+ extra_rdoc_files: []
172
+ files:
173
+ - ".gitignore"
174
+ - ".rspec"
175
+ - ".travis.yml"
176
+ - CHANGELOG.md
177
+ - Gemfile
178
+ - LICENSE
179
+ - README.md
180
+ - Rakefile
181
+ - benchmarks/basic.rb
182
+ - benchmarks/constrained.rb
183
+ - bin/console
184
+ - bin/setup
185
+ - dry-types.gemspec
186
+ - lib/dry-types.rb
187
+ - lib/dry/types.rb
188
+ - lib/dry/types/builder.rb
189
+ - lib/dry/types/coercions/form.rb
190
+ - lib/dry/types/compiler.rb
191
+ - lib/dry/types/constrained.rb
192
+ - lib/dry/types/constraints.rb
193
+ - lib/dry/types/constructor.rb
194
+ - lib/dry/types/container.rb
195
+ - lib/dry/types/core.rb
196
+ - lib/dry/types/decorator.rb
197
+ - lib/dry/types/default.rb
198
+ - lib/dry/types/definition.rb
199
+ - lib/dry/types/definition/array.rb
200
+ - lib/dry/types/definition/hash.rb
201
+ - lib/dry/types/enum.rb
202
+ - lib/dry/types/form.rb
203
+ - lib/dry/types/optional.rb
204
+ - lib/dry/types/safe.rb
205
+ - lib/dry/types/struct.rb
206
+ - lib/dry/types/sum.rb
207
+ - lib/dry/types/value.rb
208
+ - lib/dry/types/version.rb
209
+ homepage: https://github.com/dryrb/dry-types
210
+ licenses:
211
+ - MIT
212
+ metadata:
213
+ allowed_push_host: https://rubygems.org
214
+ post_install_message:
215
+ rdoc_options: []
216
+ require_paths:
217
+ - lib
218
+ required_ruby_version: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ required_rubygems_version: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ requirements: []
229
+ rubyforge_project:
230
+ rubygems_version: 2.4.5.1
231
+ signing_key:
232
+ specification_version: 4
233
+ summary: Type system for Ruby supporting coercions, constraints and complex types
234
+ like structs, value objects, enums etc.
235
+ test_files: []
236
+ has_rdoc: