Class: Kotoshu::Results::Result::Base Abstract
- Inherits:
-
Object
- Object
- Kotoshu::Results::Result::Base
- Defined in:
- lib/kotoshu/results/result.rb
Overview
This class is abstract.
Base result class.
Instance Method Summary collapse
-
#and_then {|value| ... } ⇒ Result::Success, Result::Failure
Chain operations if successful.
-
#error ⇒ StandardError?
Get the wrapped error (nil for Success).
-
#failure? ⇒ Boolean
Check if result is a failure.
-
#map {|value| ... } ⇒ Result::Success, Result::Failure
Map the value if successful.
-
#or_else {|error| ... } ⇒ Result::Success, Result::Failure
Recover from failure.
-
#success? ⇒ Boolean
Check if result is successful.
-
#unwrap ⇒ Object
Unwrap the value or raise error.
-
#value ⇒ Object?
Get the wrapped value (nil for Failure).
Instance Method Details
#and_then {|value| ... } ⇒ Result::Success, Result::Failure
Chain operations if successful.
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/kotoshu/results/result.rb', line 59 def and_then return self if failure? result = yield value # Ensure we get a Result back result.is_a?(Base) ? result : Success.new(result) rescue StandardError => e Failure.new(e) end |
#error ⇒ StandardError?
Get the wrapped error (nil for Success).
103 104 105 |
# File 'lib/kotoshu/results/result.rb', line 103 def error raise NotImplementedError end |
#failure? ⇒ Boolean
Check if result is a failure.
39 40 41 |
# File 'lib/kotoshu/results/result.rb', line 39 def failure? is_a?(Failure) end |
#map {|value| ... } ⇒ Result::Success, Result::Failure
Map the value if successful.
47 48 49 50 51 52 53 |
# File 'lib/kotoshu/results/result.rb', line 47 def map return self if failure? Success.new(yield value) rescue StandardError => e Failure.new(e) end |
#or_else {|error| ... } ⇒ Result::Success, Result::Failure
Recover from failure.
74 75 76 77 78 79 80 81 |
# File 'lib/kotoshu/results/result.rb', line 74 def or_else return self if success? result = yield error # Ensure we get a Result back result.is_a?(Base) ? result : Success.new(result) end |
#success? ⇒ Boolean
Check if result is successful.
32 33 34 |
# File 'lib/kotoshu/results/result.rb', line 32 def success? is_a?(Success) end |
#unwrap ⇒ Object
Unwrap the value or raise error.
87 88 89 90 91 |
# File 'lib/kotoshu/results/result.rb', line 87 def unwrap return value if success? raise error end |
#value ⇒ Object?
Get the wrapped value (nil for Failure).
96 97 98 |
# File 'lib/kotoshu/results/result.rb', line 96 def value raise NotImplementedError end |