Class: Resonad
- Inherits:
-
Object
show all
- Extended by:
- Mixin
- Defined in:
- lib/resonad.rb,
lib/resonad/version.rb
Defined Under Namespace
Modules: Mixin
Classes: Failure, NonExistentError, NonExistentValue, Success
Constant Summary
collapse
- NIL_SUCCESS =
Success.new(nil)
- NIL_FAILURE =
Failure.new(nil)
- VERSION =
'1.2.0'
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Mixin
Failure, Success
Constructor Details
#initialize(*args) ⇒ Resonad
Returns a new instance of Resonad.
130
131
132
|
# File 'lib/resonad.rb', line 130
def initialize(*args)
raise NotImplementedError, "This is an abstract class. Use Resonad::Success or Resonad::Failure instead."
end
|
Class Method Details
.rescuing_from(*exception_classes) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/resonad.rb', line 118
def self.rescuing_from(*exception_classes)
Success(yield)
rescue Exception => e
if exception_classes.empty?
Failure(e) elsif exception_classes.any? { |klass| e.is_a?(klass) }
Failure(e) else
raise end
end
|
Instance Method Details
#and_then(&block) ⇒ Object
149
|
# File 'lib/resonad.rb', line 149
def and_then(&block); flat_map(&block); end
|
#bad? ⇒ Boolean
144
|
# File 'lib/resonad.rb', line 144
def bad?; failure?; end
|
#failed? ⇒ Boolean
143
|
# File 'lib/resonad.rb', line 143
def failed?; failure?; end
|
#failure? ⇒ Boolean
140
141
142
|
# File 'lib/resonad.rb', line 140
def failure?
not success?
end
|
#flat_map ⇒ Object
146
147
148
|
# File 'lib/resonad.rb', line 146
def flat_map
raise NotImplementedError, "should be implemented in subclass"
end
|
#flat_map_error ⇒ Object
151
152
153
|
# File 'lib/resonad.rb', line 151
def flat_map_error
raise NotImplementedError, "should be implemented in subclass"
end
|
#ok? ⇒ Boolean
138
|
# File 'lib/resonad.rb', line 138
def ok?; success?; end
|
#or_else(&block) ⇒ Object
154
|
# File 'lib/resonad.rb', line 154
def or_else(&block); flat_map_error(&block); end
|
#success? ⇒ Boolean
134
135
136
|
# File 'lib/resonad.rb', line 134
def success?
raise NotImplementedError, "should be implemented in subclass"
end
|
#successful? ⇒ Boolean
137
|
# File 'lib/resonad.rb', line 137
def successful?; success?; end
|