bcdd-result 0.10.0 → 0.12.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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -15
  3. data/README.md +326 -67
  4. data/Rakefile +8 -2
  5. data/lib/bcdd/result/callable_and_then/caller.rb +49 -0
  6. data/lib/bcdd/result/callable_and_then/config.rb +15 -0
  7. data/lib/bcdd/result/callable_and_then/error.rb +11 -0
  8. data/lib/bcdd/result/callable_and_then.rb +9 -0
  9. data/lib/bcdd/result/config/switchers/addons.rb +9 -4
  10. data/lib/bcdd/result/config/switchers/features.rb +5 -1
  11. data/lib/bcdd/result/config.rb +9 -3
  12. data/lib/bcdd/result/context/callable_and_then.rb +39 -0
  13. data/lib/bcdd/result/context/expectations/mixin.rb +11 -3
  14. data/lib/bcdd/result/context/mixin.rb +13 -5
  15. data/lib/bcdd/result/context/success.rb +12 -8
  16. data/lib/bcdd/result/context.rb +34 -16
  17. data/lib/bcdd/result/error.rb +20 -11
  18. data/lib/bcdd/result/expectations/mixin.rb +12 -6
  19. data/lib/bcdd/result/expectations.rb +7 -7
  20. data/lib/bcdd/result/mixin.rb +11 -5
  21. data/lib/bcdd/result/transitions/tracking/disabled.rb +14 -4
  22. data/lib/bcdd/result/transitions/tracking/enabled.rb +38 -18
  23. data/lib/bcdd/result/transitions/tree.rb +10 -6
  24. data/lib/bcdd/result/transitions.rb +8 -10
  25. data/lib/bcdd/result/version.rb +1 -1
  26. data/lib/bcdd/result.rb +38 -23
  27. data/sig/bcdd/result/callable_and_then.rbs +60 -0
  28. data/sig/bcdd/result/config.rbs +3 -0
  29. data/sig/bcdd/result/context.rbs +73 -9
  30. data/sig/bcdd/result/error.rbs +9 -6
  31. data/sig/bcdd/result/expectations.rbs +12 -8
  32. data/sig/bcdd/result/mixin.rbs +10 -2
  33. data/sig/bcdd/result/transitions.rbs +16 -5
  34. data/sig/bcdd/result.rbs +12 -8
  35. metadata +8 -2
data/sig/bcdd/result.rbs CHANGED
@@ -4,25 +4,26 @@ class BCDD::Result
4
4
  private attr_reader type_checker: BCDD::Result::Contract::TypeChecker
5
5
 
6
6
  attr_reader data: BCDD::Result::Data
7
- attr_reader subject: untyped
8
- attr_reader halted: bool
7
+ attr_reader source: untyped
8
+ attr_reader terminal: bool
9
9
  attr_reader transitions: Hash[Symbol, untyped]
10
10
 
11
11
  def self.config: -> BCDD::Result::Config
12
12
  def self.configuration: { (BCDD::Result::Config) -> void } -> BCDD::Result::Config
13
+ def self.transitions: { () -> untyped } -> BCDD::Result
13
14
 
14
15
  def initialize: (
15
16
  type: Symbol,
16
17
  value: untyped,
17
- ?subject: untyped,
18
+ ?source: untyped,
18
19
  ?expectations: BCDD::Result::Contract::Evaluator,
19
- ?halted: bool
20
+ ?terminal: bool
20
21
  ) -> void
21
22
 
22
23
  def type: -> Symbol
23
24
  def value: -> untyped
24
25
 
25
- def halted?: -> bool
26
+ def terminal?: -> bool
26
27
  def success?: (?Symbol type) -> bool
27
28
  def failure?: (?Symbol type) -> bool
28
29
 
@@ -33,7 +34,9 @@ class BCDD::Result
33
34
  def on_failure: (*Symbol) { (untyped, Symbol) -> void } -> BCDD::Result
34
35
  def on_unknown: () { (untyped, Symbol) -> void } -> BCDD::Result
35
36
 
36
- def and_then: (?Symbol method_name, ?untyped context) ?{ (untyped) -> untyped } -> untyped
37
+ def and_then: (?Symbol method_name, ?untyped injected_value) ?{ (untyped) -> untyped } -> untyped
38
+
39
+ def and_then!: (untyped, ?untyped injected_value, _call: (Symbol | nil)) -> untyped
37
40
 
38
41
  def handle: () { (BCDD::Result::Handler) -> void } -> untyped
39
42
 
@@ -51,10 +54,11 @@ class BCDD::Result
51
54
 
52
55
  def kind: -> Symbol
53
56
  def known: (Proc) -> untyped
54
- def call_and_then_subject_method: (Symbol, untyped) -> BCDD::Result
55
- def call_and_then_subject_method!: (untyped, untyped) -> BCDD::Result
57
+ def call_and_then_source_method: (Symbol, untyped) -> BCDD::Result
58
+ def call_and_then_source_method!: (untyped, untyped) -> BCDD::Result
56
59
  def call_and_then_block: (untyped) -> BCDD::Result
57
60
  def call_and_then_block!: (untyped) -> BCDD::Result
61
+ def call_and_then_callable!: (untyped, value: untyped, injected_value: untyped, method_name: (Symbol | nil)) -> BCDD::Result
58
62
  def ensure_result_object: (untyped, origin: Symbol) -> BCDD::Result
59
63
  end
60
64
 
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.10.0
4
+ version: 0.12.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-12-31 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Empower Ruby apps with pragmatic use of Result pattern (monad), Railway
14
14
  Oriented Programming, and B/CDD.
@@ -28,6 +28,10 @@ files:
28
28
  - Steepfile
29
29
  - lib/bcdd-result.rb
30
30
  - lib/bcdd/result.rb
31
+ - lib/bcdd/result/callable_and_then.rb
32
+ - lib/bcdd/result/callable_and_then/caller.rb
33
+ - lib/bcdd/result/callable_and_then/config.rb
34
+ - lib/bcdd/result/callable_and_then/error.rb
31
35
  - lib/bcdd/result/config.rb
32
36
  - lib/bcdd/result/config/options.rb
33
37
  - lib/bcdd/result/config/switcher.rb
@@ -36,6 +40,7 @@ files:
36
40
  - lib/bcdd/result/config/switchers/features.rb
37
41
  - lib/bcdd/result/config/switchers/pattern_matching.rb
38
42
  - lib/bcdd/result/context.rb
43
+ - lib/bcdd/result/context/callable_and_then.rb
39
44
  - lib/bcdd/result/context/expectations.rb
40
45
  - lib/bcdd/result/context/expectations/mixin.rb
41
46
  - lib/bcdd/result/context/failure.rb
@@ -67,6 +72,7 @@ files:
67
72
  - lib/bcdd/result/transitions/tree.rb
68
73
  - lib/bcdd/result/version.rb
69
74
  - sig/bcdd/result.rbs
75
+ - sig/bcdd/result/callable_and_then.rbs
70
76
  - sig/bcdd/result/config.rbs
71
77
  - sig/bcdd/result/context.rbs
72
78
  - sig/bcdd/result/contract.rbs