bcdd-result 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +24 -11
  3. data/CHANGELOG.md +28 -0
  4. data/README.md +585 -160
  5. data/lib/bcdd/result/context/expectations/mixin.rb +35 -0
  6. data/lib/bcdd/result/context/expectations.rb +41 -0
  7. data/lib/bcdd/result/context/failure.rb +9 -0
  8. data/lib/bcdd/result/context/mixin.rb +38 -0
  9. data/lib/bcdd/result/context/success.rb +15 -0
  10. data/lib/bcdd/result/context.rb +74 -0
  11. data/lib/bcdd/result/{expectations/contract → contract}/disabled.rb +2 -2
  12. data/lib/bcdd/result/{expectations → contract}/error.rb +5 -3
  13. data/lib/bcdd/result/{expectations/contract → contract}/evaluator.rb +2 -2
  14. data/lib/bcdd/result/{expectations/contract → contract}/for_types.rb +2 -2
  15. data/lib/bcdd/result/{expectations/contract → contract}/for_types_and_values.rb +10 -8
  16. data/lib/bcdd/result/contract/interface.rb +21 -0
  17. data/lib/bcdd/result/{expectations → contract}/type_checker.rb +1 -1
  18. data/lib/bcdd/result/contract.rb +43 -0
  19. data/lib/bcdd/result/error.rb +7 -9
  20. data/lib/bcdd/result/expectations/mixin.rb +14 -9
  21. data/lib/bcdd/result/expectations.rb +28 -37
  22. data/lib/bcdd/result/failure/methods.rb +21 -0
  23. data/lib/bcdd/result/failure.rb +2 -16
  24. data/lib/bcdd/result/mixin.rb +8 -3
  25. data/lib/bcdd/result/success/methods.rb +21 -0
  26. data/lib/bcdd/result/success.rb +2 -16
  27. data/lib/bcdd/result/version.rb +1 -1
  28. data/lib/bcdd/result.rb +6 -4
  29. data/sig/bcdd/result.rbs +227 -83
  30. metadata +18 -10
  31. data/lib/bcdd/result/expectations/contract/interface.rb +0 -21
  32. data/lib/bcdd/result/expectations/contract.rb +0 -25
@@ -2,6 +2,6 @@
2
2
 
3
3
  module BCDD
4
4
  class Result
5
- VERSION = '0.6.0'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
data/lib/bcdd/result.rb CHANGED
@@ -7,7 +7,9 @@ require_relative 'result/handler'
7
7
  require_relative 'result/failure'
8
8
  require_relative 'result/success'
9
9
  require_relative 'result/mixin'
10
+ require_relative 'result/contract'
10
11
  require_relative 'result/expectations'
12
+ require_relative 'result/context'
11
13
 
12
14
  class BCDD::Result
13
15
  attr_accessor :unknown
@@ -21,7 +23,7 @@ class BCDD::Result
21
23
  def initialize(type:, value:, subject: nil, expectations: nil)
22
24
  data = Data.new(name, type, value)
23
25
 
24
- @type_checker = Expectations.evaluate(data, expectations)
26
+ @type_checker = Contract.evaluate(data, expectations)
25
27
  @subject = subject
26
28
  @data = data
27
29
 
@@ -69,7 +71,7 @@ class BCDD::Result
69
71
  def and_then(method_name = nil, context = nil)
70
72
  return self if failure?
71
73
 
72
- method_name && block_given? and raise ArgumentError, 'method_name and block are mutually exclusive'
74
+ method_name && block_given? and raise ::ArgumentError, 'method_name and block are mutually exclusive'
73
75
 
74
76
  return call_subject_method(method_name, context) if method_name
75
77
 
@@ -129,7 +131,7 @@ class BCDD::Result
129
131
  when 0 then subject.send(method_name)
130
132
  when 1 then subject.send(method_name, value)
131
133
  when 2 then subject.send(method_name, value, context)
132
- else raise Error::WrongSubjectMethodArity.build(subject: subject, method: method)
134
+ else raise Error::InvalidSubjectMethodArity.build(subject: subject, method: method, max_arity: 2)
133
135
  end
134
136
 
135
137
  ensure_result_object(result, origin: :method)
@@ -140,6 +142,6 @@ class BCDD::Result
140
142
 
141
143
  return result if result.subject.equal?(subject)
142
144
 
143
- raise Error::WrongResultSubject.build(given_result: result, expected_subject: subject)
145
+ raise Error::InvalidResultSubject.build(given_result: result, expected_subject: subject)
144
146
  end
145
147
  end
data/sig/bcdd/result.rbs CHANGED
@@ -6,7 +6,7 @@ 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
+ private attr_reader type_checker: BCDD::Result::Contract::TypeChecker
10
10
 
11
11
  attr_reader data: BCDD::Result::Data
12
12
  attr_reader subject: untyped
@@ -15,7 +15,7 @@ class BCDD::Result
15
15
  type: Symbol,
16
16
  value: untyped,
17
17
  ?subject: untyped,
18
- ?expectations: BCDD::Result::Expectations::Contract::Evaluator
18
+ ?expectations: BCDD::Result::Contract::Evaluator
19
19
  ) -> void
20
20
 
21
21
  def type: -> Symbol
@@ -31,7 +31,7 @@ class BCDD::Result
31
31
  def on_failure: (*Symbol) { (untyped, Symbol) -> void } -> BCDD::Result
32
32
  def on_unknown: () { (untyped, Symbol) -> void } -> BCDD::Result
33
33
 
34
- def and_then: (?Symbol method_name, ?untyped context) ?{ (untyped) -> untyped } -> BCDD::Result
34
+ def and_then: (?Symbol method_name, ?untyped context) ?{ (untyped) -> untyped } -> untyped
35
35
 
36
36
  def handle: () { (BCDD::Result::Handler) -> void } -> untyped
37
37
 
@@ -54,17 +54,42 @@ class BCDD::Result
54
54
  end
55
55
 
56
56
  class BCDD::Result
57
- class Failure < BCDD::Result
57
+ class Success < BCDD::Result
58
+ module Methods
59
+ def success?: (?Symbol type) -> bool
60
+ def failure?: (?Symbol type) -> bool
61
+ def value_or: { () -> untyped } -> untyped
62
+ def value: -> untyped
63
+
64
+ private
65
+ def name: -> Symbol
66
+ def type_checker: -> BCDD::Result::Contract::TypeChecker
67
+ end
68
+
69
+ include Methods
58
70
  end
59
71
 
60
- def self.Success: (Symbol type, ?untyped value) -> BCDD::Result::Success
72
+ def self.Failure: (Symbol type, ?untyped value) -> BCDD::Result::Failure
61
73
  end
62
74
 
75
+
63
76
  class BCDD::Result
64
- class Success < BCDD::Result
77
+ class Failure < BCDD::Result
78
+ module Methods
79
+ def success?: (?Symbol type) -> bool
80
+ def failure?: (?Symbol type) -> bool
81
+ def value_or: { (untyped) -> untyped } -> untyped
82
+ def value: -> untyped
83
+
84
+ private
85
+ def name: -> Symbol
86
+ def type_checker: -> BCDD::Result::Contract::TypeChecker
87
+ end
88
+
89
+ include Methods
65
90
  end
66
91
 
67
- def self.Failure: (Symbol type, ?untyped value) -> BCDD::Result::Failure
92
+ def self.Success: (Symbol type, ?untyped value) -> BCDD::Result::Success
68
93
  end
69
94
 
70
95
  class BCDD::Result
@@ -79,13 +104,17 @@ class BCDD::Result
79
104
  module Continuable
80
105
  include BCDD::Result::Mixin::Methods
81
106
 
82
- private def Continue: (untyped) -> BCDD::Result::Success
107
+ private
108
+
109
+ def Continue: (untyped) -> BCDD::Result::Success
83
110
  end
84
111
 
85
112
  OPTIONS: Hash[Symbol, Module]
86
113
 
87
114
  def self.options: (Array[Symbol]) -> Array[Module]
88
115
  end
116
+
117
+ def self.module!: -> Module
89
118
  end
90
119
 
91
120
  def self.mixin: (?with: Array[Symbol]) -> Module
@@ -109,7 +138,7 @@ class BCDD::Result
109
138
  end
110
139
 
111
140
  class BCDD::Result
112
- class Error < ::StandardError
141
+ class Error < StandardError
113
142
  def self.build: (**untyped) -> BCDD::Result::Error
114
143
 
115
144
  class NotImplemented < BCDD::Result::Error
@@ -119,18 +148,18 @@ class BCDD::Result
119
148
  end
120
149
 
121
150
  class UnexpectedOutcome < BCDD::Result::Error
122
- def self.build: (outcome: untyped, origin: Symbol)
151
+ def self.build: (outcome: untyped, origin: Symbol, ?expected: String)
123
152
  -> BCDD::Result::Error::UnexpectedOutcome
124
153
  end
125
154
 
126
- class WrongResultSubject < BCDD::Result::Error
155
+ class InvalidResultSubject < BCDD::Result::Error
127
156
  def self.build: (given_result: BCDD::Result, expected_subject: untyped)
128
- -> BCDD::Result::Error::WrongResultSubject
157
+ -> BCDD::Result::Error::InvalidResultSubject
129
158
  end
130
159
 
131
- class WrongSubjectMethodArity < BCDD::Result::Error
132
- def self.build: (subject: untyped, method: ::Method)
133
- -> BCDD::Result::Error::WrongSubjectMethodArity
160
+ class InvalidSubjectMethodArity < BCDD::Result::Error
161
+ def self.build: (subject: untyped, method: Method, max_arity: Integer)
162
+ -> BCDD::Result::Error::InvalidSubjectMethodArity
134
163
  end
135
164
 
136
165
  class UnhandledTypes < BCDD::Result::Error
@@ -146,7 +175,7 @@ class BCDD::Result
146
175
 
147
176
  def initialize: (
148
177
  BCDD::Result,
149
- type_checker: BCDD::Result::Expectations::TypeChecker
178
+ type_checker: BCDD::Result::Contract::TypeChecker
150
179
  ) -> void
151
180
 
152
181
  def []: (*Symbol) { (untyped, Symbol) -> void } -> untyped
@@ -170,10 +199,10 @@ end
170
199
  class BCDD::Result::Handler
171
200
  class AllowedTypes
172
201
  attr_reader unchecked: Set[Symbol]
173
- attr_reader type_checker: BCDD::Result::Expectations::TypeChecker
202
+ attr_reader type_checker: BCDD::Result::Contract::TypeChecker
174
203
 
175
204
  def initialize: (
176
- BCDD::Result::Expectations::TypeChecker
205
+ BCDD::Result::Contract::TypeChecker
177
206
  ) -> void
178
207
 
179
208
  def allow?: (Array[Symbol]) -> bool
@@ -188,69 +217,34 @@ class BCDD::Result::Handler
188
217
  end
189
218
  end
190
219
 
191
- class BCDD::Result::Expectations
192
- MIXIN_METHODS: String
193
-
194
- def self.mixin: (
195
- ?success: Hash[Symbol, untyped] | Array[Symbol],
196
- ?failure: Hash[Symbol, untyped] | Array[Symbol]
197
- ) -> Module
220
+ module BCDD::Result::Contract
221
+ NONE: BCDD::Result::Contract::Evaluator
198
222
 
199
223
  def self.evaluate: (
200
224
  BCDD::Result::Data,
201
- BCDD::Result::Expectations::Contract::Evaluator
202
- ) -> BCDD::Result::Expectations::TypeChecker
203
-
204
- def initialize: (
205
- ?subject: untyped,
206
- ?success: Hash[Symbol, untyped] | Array[Symbol],
207
- ?failure: Hash[Symbol, untyped] | Array[Symbol],
208
- ?contract: BCDD::Result::Expectations::Contract::Evaluator
209
- ) -> void
210
-
211
- def Success: (Symbol, ?untyped) -> BCDD::Result::Success
212
- def Failure: (Symbol, ?untyped) -> BCDD::Result::Failure
213
-
214
- private
215
-
216
- attr_reader subject: untyped
217
- attr_reader contract: BCDD::Result::Expectations::Contract::Evaluator
218
- end
219
-
220
- module BCDD::Result::Expectations::Mixin
221
- METHODS: String
222
-
223
- module Addons
224
- module Continuable
225
- private def Continue: (untyped) -> BCDD::Result::Success
226
- end
227
-
228
- OPTIONS: Hash[Symbol, Module]
229
-
230
- def self.options: (Array[Symbol]) -> Array[Module]
231
- end
232
- end
233
-
234
- module BCDD::Result::Expectations::Contract
235
- NONE: BCDD::Result::Expectations::Contract::Evaluator
225
+ BCDD::Result::Contract::Evaluator
226
+ ) -> BCDD::Result::Contract::TypeChecker
236
227
 
237
228
  ToEnsure: ^(Hash[Symbol, untyped] | Array[Symbol])
238
- -> BCDD::Result::Expectations::Contract::Evaluator
229
+ -> BCDD::Result::Contract::Evaluator
239
230
 
240
231
  def self.new: (
241
232
  success: Hash[Symbol, untyped] | Array[Symbol],
242
233
  failure: Hash[Symbol, untyped] | Array[Symbol]
243
- ) -> BCDD::Result::Expectations::Contract::Evaluator
234
+ ) -> BCDD::Result::Contract::Evaluator
235
+
236
+ def self.nil_as_valid_value_checking!: (?enabled: bool) -> void
237
+ def self.nil_as_valid_value_checking?: -> bool
244
238
  end
245
239
 
246
- class BCDD::Result::Expectations
240
+ module BCDD::Result::Contract
247
241
  class TypeChecker
248
242
  attr_reader result_type: Symbol
249
- attr_reader expectations: BCDD::Result::Expectations::Contract::Evaluator
243
+ attr_reader expectations: BCDD::Result::Contract::Evaluator
250
244
 
251
245
  def initialize: (
252
246
  Symbol,
253
- expectations: BCDD::Result::Expectations::Contract::Evaluator
247
+ expectations: BCDD::Result::Contract::Evaluator
254
248
  ) -> void
255
249
 
256
250
  def allow?: (Array[Symbol]) -> bool
@@ -261,27 +255,27 @@ class BCDD::Result::Expectations
261
255
 
262
256
  def validate: (
263
257
  Array[Symbol],
264
- expected: BCDD::Result::Expectations::Contract::Interface,
258
+ expected: BCDD::Result::Contract::Interface,
265
259
  allow_empty: bool
266
260
  ) -> bool
267
261
  end
268
262
  end
269
263
 
270
- class BCDD::Result::Expectations::Error < BCDD::Result::Error
271
- class UnexpectedType < BCDD::Result::Expectations::Error
264
+ class BCDD::Result::Contract::Error < BCDD::Result::Error
265
+ class UnexpectedType < BCDD::Result::Contract::Error
272
266
  def self.build: (type: Symbol, allowed_types: Set[Symbol])
273
- -> BCDD::Result::Expectations::Error::UnexpectedType
267
+ -> BCDD::Result::Contract::Error::UnexpectedType
274
268
  end
275
269
 
276
- class UnexpectedValue < BCDD::Result::Expectations::Error
277
- def self.build: (type: Symbol, value: untyped)
278
- -> BCDD::Result::Expectations::Error::UnexpectedValue
270
+ class UnexpectedValue < BCDD::Result::Contract::Error
271
+ def self.build: (type: Symbol, value: untyped, ?cause: Exception)
272
+ -> BCDD::Result::Contract::Error::UnexpectedValue
279
273
  end
280
274
  end
281
275
 
282
- module BCDD::Result::Expectations::Contract
276
+ module BCDD::Result::Contract
283
277
  module Interface
284
- def ==: (BCDD::Result::Expectations::Contract::Interface) -> bool
278
+ def ==: (BCDD::Result::Contract::Interface) -> bool
285
279
 
286
280
  def allowed_types: -> Set[Symbol]
287
281
 
@@ -295,7 +289,7 @@ module BCDD::Result::Expectations::Contract
295
289
  end
296
290
  end
297
291
 
298
- module BCDD::Result::Expectations::Contract
292
+ module BCDD::Result::Contract
299
293
  module Disabled
300
294
  extend Interface
301
295
 
@@ -303,7 +297,7 @@ module BCDD::Result::Expectations::Contract
303
297
  end
304
298
  end
305
299
 
306
- module BCDD::Result::Expectations::Contract
300
+ module BCDD::Result::Contract
307
301
  class ForTypes
308
302
  include Interface
309
303
 
@@ -311,7 +305,7 @@ module BCDD::Result::Expectations::Contract
311
305
  end
312
306
  end
313
307
 
314
- module BCDD::Result::Expectations::Contract
308
+ module BCDD::Result::Contract
315
309
  class ForTypesAndValues
316
310
  include Interface
317
311
 
@@ -319,21 +313,171 @@ module BCDD::Result::Expectations::Contract
319
313
  end
320
314
  end
321
315
 
322
- module BCDD::Result::Expectations::Contract
316
+ module BCDD::Result::Contract
323
317
  class Evaluator
324
318
  include Interface
325
319
 
326
320
  attr_reader allowed_types: Set[Symbol]
327
- attr_reader success: BCDD::Result::Expectations::Contract::Interface
328
- attr_reader failure: BCDD::Result::Expectations::Contract::Interface
321
+ attr_reader success: BCDD::Result::Contract::Interface
322
+ attr_reader failure: BCDD::Result::Contract::Interface
329
323
 
330
324
  def initialize: (
331
- BCDD::Result::Expectations::Contract::Interface,
332
- BCDD::Result::Expectations::Contract::Interface
325
+ BCDD::Result::Contract::Interface,
326
+ BCDD::Result::Contract::Interface
333
327
  ) -> void
334
328
 
335
329
  private
336
330
 
337
- def for: (BCDD::Result::Data) -> BCDD::Result::Expectations::Contract::Interface
331
+ def for: (BCDD::Result::Data) -> BCDD::Result::Contract::Interface
332
+ end
333
+ end
334
+
335
+ class BCDD::Result::Expectations
336
+ def self.mixin: (
337
+ ?with: Symbol,
338
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
339
+ ?failure: Hash[Symbol, untyped] | Array[Symbol]
340
+ ) -> Module
341
+
342
+ def initialize: (
343
+ ?subject: untyped,
344
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
345
+ ?failure: Hash[Symbol, untyped] | Array[Symbol],
346
+ ?contract: BCDD::Result::Contract::Evaluator
347
+ ) -> void
348
+
349
+ def Success: (Symbol, ?untyped) -> BCDD::Result::Success
350
+ def Failure: (Symbol, ?untyped) -> BCDD::Result::Failure
351
+
352
+ def with: (subject: untyped) -> BCDD::Result::Expectations
353
+
354
+ private
355
+
356
+ attr_reader subject: untyped
357
+ attr_reader contract: BCDD::Result::Contract::Evaluator
358
+ end
359
+
360
+ module BCDD::Result::Expectations::Mixin
361
+ METHODS: String
362
+
363
+ module Addons
364
+ module Continuable
365
+ private def Continue: (untyped) -> BCDD::Result::Success
366
+ end
367
+
368
+ OPTIONS: Hash[Symbol, Module]
369
+
370
+ def self.options: (Symbol) -> Array[Module]
371
+ end
372
+
373
+ def self.module!: -> Module
374
+ end
375
+
376
+ class BCDD::Result::Context < BCDD::Result
377
+ EXPECTED_OUTCOME: String
378
+
379
+ SubjectMethodArity: ^(Method) -> Integer
380
+
381
+ attr_reader acc: Hash[Symbol, untyped]
382
+
383
+ def initialize: (
384
+ type: Symbol,
385
+ value: untyped,
386
+ ?subject: untyped,
387
+ ?expectations: BCDD::Result::Contract::Evaluator
388
+ ) -> void
389
+
390
+ def and_then: (?Symbol, **untyped) ?{ (Hash[Symbol, untyped]) -> untyped } -> BCDD::Result::Context
391
+
392
+ private
393
+
394
+ def call_subject_method: (Symbol, Hash[Symbol, untyped]) -> BCDD::Result::Context
395
+ def ensure_result_object: (untyped, origin: Symbol) -> BCDD::Result::Context
396
+
397
+ def raise_unexpected_outcome_error: (BCDD::Result::Context | untyped, Symbol) -> void
398
+ end
399
+
400
+ class BCDD::Result::Context
401
+ class Success < BCDD::Result::Context
402
+ include BCDD::Result::Success::Methods
403
+
404
+ def and_expose: (Symbol, Array[Symbol]) -> BCDD::Result::Context::Success
405
+ end
406
+
407
+ def self.Success: (Symbol, **untyped) -> BCDD::Result::Context::Success
408
+ end
409
+
410
+ class BCDD::Result::Context
411
+ class Failure < BCDD::Result::Context
412
+ include BCDD::Result::Failure::Methods
413
+
414
+ def and_expose: (Symbol, Array[Symbol]) -> BCDD::Result::Context::Failure
415
+ end
416
+
417
+ def self.Failure: (Symbol, **untyped) -> BCDD::Result::Context::Failure
418
+ end
419
+
420
+ class BCDD::Result::Context
421
+ module Mixin
422
+ module Methods
423
+ def Success: (Symbol, **untyped) -> BCDD::Result::Context::Success
424
+
425
+ def Failure: (Symbol, **untyped) -> BCDD::Result::Context::Failure
426
+ end
427
+
428
+ module Addons
429
+ module Continuable
430
+ include BCDD::Result::Context::Mixin::Methods
431
+
432
+ private
433
+
434
+ def Continue: (**untyped) -> BCDD::Result::Context::Success
435
+ end
436
+
437
+ OPTIONS: Hash[Symbol, Module]
438
+
439
+ def self.options: (Array[Symbol]) -> Array[Module]
440
+ end
441
+ end
442
+
443
+ def self.mixin: (?with: Array[Symbol]) -> Module
444
+ end
445
+
446
+ class BCDD::Result::Context::Expectations
447
+ def self.mixin: (
448
+ ?with: Symbol,
449
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
450
+ ?failure: Hash[Symbol, untyped] | Array[Symbol]
451
+ ) -> Module
452
+
453
+ def initialize: (
454
+ ?subject: untyped,
455
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
456
+ ?failure: Hash[Symbol, untyped] | Array[Symbol],
457
+ ?contract: BCDD::Result::Contract::Evaluator
458
+ ) -> void
459
+
460
+ def Success: (Symbol, **untyped) -> BCDD::Result::Context::Success
461
+ def Failure: (Symbol, **untyped) -> BCDD::Result::Context::Failure
462
+
463
+ def with: (subject: untyped) -> BCDD::Result::Context::Expectations
464
+
465
+ private
466
+
467
+ attr_reader subject: untyped
468
+ attr_reader contract: BCDD::Result::Contract::Evaluator
469
+ end
470
+
471
+ module BCDD::Result::Context::Expectations::Mixin
472
+ METHODS: String
473
+
474
+ module Addons
475
+ module Continuable
476
+ private def Continue: (**untyped) -> BCDD::Result::Context::Success
477
+ end
478
+
479
+ OPTIONS: Hash[Symbol, Module]
480
+
481
+ def self.options: (Symbol) -> Array[Module]
338
482
  end
339
483
  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.6.0
4
+ version: 0.7.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-10-11 00:00:00.000000000 Z
11
+ date: 2023-10-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Empower Ruby apps with a pragmatic use of Railway Oriented Programming.
@@ -29,23 +29,31 @@ files:
29
29
  - Rakefile
30
30
  - Steepfile
31
31
  - lib/bcdd/result.rb
32
+ - lib/bcdd/result/context.rb
33
+ - lib/bcdd/result/context/expectations.rb
34
+ - lib/bcdd/result/context/expectations/mixin.rb
35
+ - lib/bcdd/result/context/failure.rb
36
+ - lib/bcdd/result/context/mixin.rb
37
+ - lib/bcdd/result/context/success.rb
38
+ - lib/bcdd/result/contract.rb
39
+ - lib/bcdd/result/contract/disabled.rb
40
+ - lib/bcdd/result/contract/error.rb
41
+ - lib/bcdd/result/contract/evaluator.rb
42
+ - lib/bcdd/result/contract/for_types.rb
43
+ - lib/bcdd/result/contract/for_types_and_values.rb
44
+ - lib/bcdd/result/contract/interface.rb
45
+ - lib/bcdd/result/contract/type_checker.rb
32
46
  - lib/bcdd/result/data.rb
33
47
  - lib/bcdd/result/error.rb
34
48
  - 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
49
  - lib/bcdd/result/expectations/mixin.rb
43
- - lib/bcdd/result/expectations/type_checker.rb
44
50
  - lib/bcdd/result/failure.rb
51
+ - lib/bcdd/result/failure/methods.rb
45
52
  - lib/bcdd/result/handler.rb
46
53
  - lib/bcdd/result/handler/allowed_types.rb
47
54
  - lib/bcdd/result/mixin.rb
48
55
  - lib/bcdd/result/success.rb
56
+ - lib/bcdd/result/success/methods.rb
49
57
  - lib/bcdd/result/version.rb
50
58
  - lib/result.rb
51
59
  - sig/bcdd/result.rbs
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class BCDD::Result::Expectations
4
- module Contract::Interface
5
- def allowed_types
6
- raise ::BCDD::Result::Error::NotImplemented
7
- end
8
-
9
- def type?(_type)
10
- raise ::BCDD::Result::Error::NotImplemented
11
- end
12
-
13
- def type!(_type)
14
- raise ::BCDD::Result::Error::NotImplemented
15
- end
16
-
17
- def type_and_value!(_data)
18
- raise ::BCDD::Result::Error::NotImplemented
19
- end
20
- end
21
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class BCDD::Result::Expectations
4
- module Contract
5
- require_relative 'contract/interface'
6
- require_relative 'contract/evaluator'
7
- require_relative 'contract/disabled'
8
- require_relative 'contract/for_types'
9
- require_relative 'contract/for_types_and_values'
10
-
11
- NONE = Contract::Evaluator.new(Contract::Disabled, Contract::Disabled).freeze
12
-
13
- ToEnsure = ->(spec) do
14
- return Contract::Disabled if spec.nil?
15
-
16
- spec.is_a?(Hash) ? Contract::ForTypesAndValues.new(spec) : Contract::ForTypes.new(Array(spec))
17
- end
18
-
19
- def self.new(success:, failure:)
20
- Contract::Evaluator.new(ToEnsure[success], ToEnsure[failure])
21
- end
22
-
23
- private_constant :ToEnsure
24
- end
25
- end