bcdd-result 0.4.0 → 0.5.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.
data/sig/bcdd/result.rbs CHANGED
@@ -6,14 +6,20 @@ end
6
6
 
7
7
  class BCDD::Result
8
8
  private attr_accessor unknown: bool
9
+ private attr_reader type_checker: BCDD::Result::Expectations::TypeChecker
9
10
 
10
- attr_reader _type: BCDD::Result::Type
11
- attr_reader value: untyped
11
+ attr_reader data: BCDD::Result::Data
12
12
  attr_reader subject: untyped
13
13
 
14
- def initialize: (type: Symbol, value: untyped, ?subject: untyped) -> void
14
+ def initialize: (
15
+ type: Symbol,
16
+ value: untyped,
17
+ ?subject: untyped,
18
+ ?expectations: BCDD::Result::Expectations::Contract::Evaluator
19
+ ) -> void
15
20
 
16
21
  def type: -> Symbol
22
+ def value: -> untyped
17
23
 
18
24
  def success?: (?Symbol type) -> bool
19
25
  def failure?: (?Symbol type) -> bool
@@ -27,9 +33,7 @@ class BCDD::Result
27
33
 
28
34
  def and_then: (?Symbol method_name) { (untyped) -> untyped } -> BCDD::Result
29
35
 
30
- def handle: { (BCDD::Result::Handler) -> void } -> untyped
31
-
32
- def data: -> BCDD::Result::Data
36
+ def handle: () { (BCDD::Result::Handler) -> void } -> untyped
33
37
 
34
38
  def ==: (untyped) -> bool
35
39
  def hash: -> Integer
@@ -71,40 +75,6 @@ class BCDD::Result
71
75
  end
72
76
  end
73
77
 
74
- class BCDD::Result
75
- class Handler
76
- UNDEFINED: Object
77
-
78
- def initialize: (BCDD::Result) -> void
79
-
80
- def []: (*Symbol) { (untyped, Symbol) -> void } -> untyped
81
- def failure: (*Symbol) { (untyped, Symbol) -> void } -> untyped
82
- def success: (*Symbol) { (untyped, Symbol) -> void } -> untyped
83
- def unknown: () { (untyped, Symbol) -> void } -> untyped
84
-
85
- alias type []
86
-
87
- private
88
-
89
- attr_reader _type: BCDD::Result::Type
90
- attr_reader result: BCDD::Result
91
-
92
- def outcome?: -> bool
93
- def outcome=: (Proc) -> void
94
- def outcome: -> untyped
95
- end
96
- end
97
-
98
- class BCDD::Result
99
- class Type
100
- attr_reader to_sym: Symbol
101
-
102
- def initialize: (Symbol) -> void
103
-
104
- def in?: (Array[Symbol], allow_empty: bool) -> bool
105
- end
106
- end
107
-
108
78
  class BCDD::Result
109
79
  class Data
110
80
  attr_reader name: Symbol
@@ -113,7 +83,7 @@ class BCDD::Result
113
83
  attr_reader to_h: Hash[Symbol, untyped]
114
84
  attr_reader to_a: [Symbol, Symbol, untyped]
115
85
 
116
- def initialize: (BCDD::Result) -> void
86
+ def initialize: (Symbol, Symbol, untyped) -> void
117
87
 
118
88
  def inspect: -> String
119
89
 
@@ -146,5 +116,194 @@ class BCDD::Result
146
116
  def self.build: (subject: untyped, method: ::Method)
147
117
  -> BCDD::Result::Error::WrongSubjectMethodArity
148
118
  end
119
+
120
+ class UnhandledTypes < BCDD::Result::Error
121
+ def self.build: (types: Set[Symbol])
122
+ -> BCDD::Result::Error::UnhandledTypes
123
+ end
124
+ end
125
+ end
126
+
127
+ class BCDD::Result
128
+ class Handler
129
+ UNDEFINED: Object
130
+
131
+ def initialize: (
132
+ BCDD::Result,
133
+ type_checker: BCDD::Result::Expectations::TypeChecker
134
+ ) -> void
135
+
136
+ def []: (*Symbol) { (untyped, Symbol) -> void } -> untyped
137
+ def failure: (*Symbol) { (untyped, Symbol) -> void } -> untyped
138
+ def success: (*Symbol) { (untyped, Symbol) -> void } -> untyped
139
+ def unknown: () { (untyped, Symbol) -> void } -> untyped
140
+
141
+ alias type []
142
+
143
+ private
144
+
145
+ attr_reader result: BCDD::Result
146
+ attr_reader allowed_types: BCDD::Result::Handler::AllowedTypes
147
+
148
+ def outcome?: -> bool
149
+ def outcome=: (Proc) -> void
150
+ def outcome: -> untyped
151
+ end
152
+ end
153
+
154
+ class BCDD::Result::Handler
155
+ class AllowedTypes
156
+ attr_reader unchecked: Set[Symbol]
157
+ attr_reader type_checker: BCDD::Result::Expectations::TypeChecker
158
+
159
+ def initialize: (
160
+ BCDD::Result::Expectations::TypeChecker
161
+ ) -> void
162
+
163
+ def allow?: (Array[Symbol]) -> bool
164
+ def allow_success?: (Array[Symbol]) -> bool
165
+ def allow_failure?: (Array[Symbol]) -> bool
166
+
167
+ def all_checked?: -> bool
168
+
169
+ private
170
+
171
+ def check!: (Array[Symbol], bool) -> bool
172
+ end
173
+ end
174
+
175
+ class BCDD::Result::Expectations
176
+ MIXIN_METHODS: String
177
+
178
+ def self.mixin: (
179
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
180
+ ?failure: Hash[Symbol, untyped] | Array[Symbol]
181
+ ) -> Module
182
+
183
+ def self.evaluate: (
184
+ BCDD::Result::Data,
185
+ BCDD::Result::Expectations::Contract::Evaluator
186
+ ) -> BCDD::Result::Expectations::TypeChecker
187
+
188
+ def initialize: (
189
+ ?subject: untyped,
190
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
191
+ ?failure: Hash[Symbol, untyped] | Array[Symbol],
192
+ ?contract: BCDD::Result::Expectations::Contract::Evaluator
193
+ ) -> void
194
+
195
+ def Success: (Symbol, ?untyped) -> BCDD::Result::Success
196
+ def Failure: (Symbol, ?untyped) -> BCDD::Result::Failure
197
+
198
+ private
199
+
200
+ attr_reader subject: untyped
201
+ attr_reader contract: BCDD::Result::Expectations::Contract::Evaluator
202
+ end
203
+
204
+ module BCDD::Result::Expectations::Contract
205
+ NONE: BCDD::Result::Expectations::Contract::Evaluator
206
+
207
+ ToEnsure: ^(Hash[Symbol, untyped] | Array[Symbol])
208
+ -> BCDD::Result::Expectations::Contract::Evaluator
209
+
210
+ def self.new: (
211
+ success: Hash[Symbol, untyped] | Array[Symbol],
212
+ failure: Hash[Symbol, untyped] | Array[Symbol]
213
+ ) -> BCDD::Result::Expectations::Contract::Evaluator
214
+ end
215
+
216
+ class BCDD::Result::Expectations
217
+ class TypeChecker
218
+ attr_reader result_type: Symbol
219
+ attr_reader expectations: BCDD::Result::Expectations::Contract::Evaluator
220
+
221
+ def initialize: (
222
+ Symbol,
223
+ expectations: BCDD::Result::Expectations::Contract::Evaluator
224
+ ) -> void
225
+
226
+ def allow?: (Array[Symbol]) -> bool
227
+ def allow_success?: (Array[Symbol]) -> bool
228
+ def allow_failure?: (Array[Symbol]) -> bool
229
+
230
+ private
231
+
232
+ def validate: (
233
+ Array[Symbol],
234
+ expected: BCDD::Result::Expectations::Contract::Interface,
235
+ allow_empty: bool
236
+ ) -> bool
237
+ end
238
+ end
239
+
240
+ class BCDD::Result::Expectations::Error < BCDD::Result::Error
241
+ class UnexpectedType < BCDD::Result::Expectations::Error
242
+ def self.build: (type: Symbol, allowed_types: Set[Symbol])
243
+ -> BCDD::Result::Expectations::Error::UnexpectedType
244
+ end
245
+
246
+ class UnexpectedValue < BCDD::Result::Expectations::Error
247
+ def self.build: (type: Symbol, value: untyped)
248
+ -> BCDD::Result::Expectations::Error::UnexpectedValue
249
+ end
250
+ end
251
+
252
+ module BCDD::Result::Expectations::Contract
253
+ module Interface
254
+ def ==: (BCDD::Result::Expectations::Contract::Interface) -> bool
255
+
256
+ def allowed_types: -> Set[Symbol]
257
+
258
+ def type?: (Symbol) -> bool
259
+
260
+ def type!: (Symbol) -> Symbol
261
+
262
+ def type_and_value!: (BCDD::Result::Data) -> void
263
+
264
+ def !=: (untyped) -> bool
265
+ end
266
+ end
267
+
268
+ module BCDD::Result::Expectations::Contract
269
+ module Disabled
270
+ extend Interface
271
+
272
+ EMPTY_SET: Set[Symbol]
273
+ end
274
+ end
275
+
276
+ module BCDD::Result::Expectations::Contract
277
+ class ForTypes
278
+ include Interface
279
+
280
+ def initialize: (Array[Symbol]) -> void
281
+ end
282
+ end
283
+
284
+ module BCDD::Result::Expectations::Contract
285
+ class ForTypesAndValues
286
+ include Interface
287
+
288
+ def initialize: (Hash[Symbol, untyped]) -> void
289
+ end
290
+ end
291
+
292
+ module BCDD::Result::Expectations::Contract
293
+ class Evaluator
294
+ include Interface
295
+
296
+ attr_reader allowed_types: Set[Symbol]
297
+ attr_reader success: BCDD::Result::Expectations::Contract::Interface
298
+ attr_reader failure: BCDD::Result::Expectations::Contract::Interface
299
+
300
+ def initialize: (
301
+ BCDD::Result::Expectations::Contract::Interface,
302
+ BCDD::Result::Expectations::Contract::Interface
303
+ ) -> void
304
+
305
+ private
306
+
307
+ def for: (BCDD::Result::Data) -> BCDD::Result::Expectations::Contract::Interface
149
308
  end
150
309
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcdd-result
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-29 00:00:00.000000000 Z
11
+ date: 2023-10-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Empower Ruby apps with a pragmatic use of Railway Oriented Programming.
@@ -31,11 +31,20 @@ files:
31
31
  - lib/bcdd/result.rb
32
32
  - lib/bcdd/result/data.rb
33
33
  - lib/bcdd/result/error.rb
34
+ - lib/bcdd/result/expectations.rb
35
+ - lib/bcdd/result/expectations/contract.rb
36
+ - lib/bcdd/result/expectations/contract/disabled.rb
37
+ - lib/bcdd/result/expectations/contract/evaluator.rb
38
+ - lib/bcdd/result/expectations/contract/for_types.rb
39
+ - lib/bcdd/result/expectations/contract/for_types_and_values.rb
40
+ - lib/bcdd/result/expectations/contract/interface.rb
41
+ - lib/bcdd/result/expectations/error.rb
42
+ - lib/bcdd/result/expectations/type_checker.rb
34
43
  - lib/bcdd/result/failure.rb
35
44
  - lib/bcdd/result/handler.rb
45
+ - lib/bcdd/result/handler/allowed_types.rb
36
46
  - lib/bcdd/result/mixin.rb
37
47
  - lib/bcdd/result/success.rb
38
- - lib/bcdd/result/type.rb
39
48
  - lib/bcdd/result/version.rb
40
49
  - lib/result.rb
41
50
  - sig/bcdd/result.rbs
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class BCDD::Result
4
- class Type
5
- attr_reader :to_sym
6
-
7
- def initialize(type)
8
- @to_sym = type.to_sym
9
- end
10
-
11
- def in?(types, allow_empty: false)
12
- (allow_empty && types.empty?) || types.any?(to_sym)
13
- end
14
- end
15
-
16
- private_constant :Type
17
- end