Class: Micro::Case::Result
- Inherits:
-
Object
- Object
- Micro::Case::Result
- Defined in:
- lib/micro/case/result.rb
Instance Attribute Summary collapse
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Instance Method Summary collapse
- #__set__(is_success, value, type, use_case) ⇒ Object
- #failure? ⇒ Boolean
- #on_failure(expected_type = nil) ⇒ Object
- #on_success(expected_type = nil) ⇒ Object
- #success? ⇒ Boolean
- #then(arg = nil, &block) ⇒ Object
- #use_case ⇒ Object
Instance Attribute Details
#type ⇒ Object (readonly)
Returns the value of attribute type.
18 19 20 |
# File 'lib/micro/case/result.rb', line 18 def type @type end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
18 19 20 |
# File 'lib/micro/case/result.rb', line 18 def value @value end |
Instance Method Details
#__set__(is_success, value, type, use_case) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/micro/case/result.rb', line 20 def __set__(is_success, value, type, use_case) raise Error::InvalidResultType unless type.is_a?(Symbol) raise Error::InvalidUseCase if !is_success && !is_a_use_case?(use_case) @success, @value, @type, @use_case = is_success, value, type, use_case self end |
#failure? ⇒ Boolean
33 34 35 |
# File 'lib/micro/case/result.rb', line 33 def failure? !success? end |
#on_failure(expected_type = nil) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/micro/case/result.rb', line 47 def on_failure(expected_type = nil) return self unless failure_type?(expected_type) data = expected_type.nil? ? Data.new(value, type).tap(&:freeze) : value self.tap { yield(data, @use_case) } end |
#on_success(expected_type = nil) ⇒ Object
43 44 45 |
# File 'lib/micro/case/result.rb', line 43 def on_success(expected_type = nil) self.tap { yield(value) if success_type?(expected_type) } end |
#success? ⇒ Boolean
29 30 31 |
# File 'lib/micro/case/result.rb', line 29 def success? @success end |
#then(arg = nil, &block) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/micro/case/result.rb', line 55 def then(arg = nil, &block) can_yield_self = respond_to?(:yield_self) if block raise Error::InvalidInvocationOfTheThenMethod if arg raise NotImplementedError if !can_yield_self yield_self(&block) else return yield_self if !arg && can_yield_self raise Error::InvalidInvocationOfTheThenMethod if !is_a_use_case?(arg) return self if failure? arg.call(self.value) end end |
#use_case ⇒ Object
37 38 39 40 41 |
# File 'lib/micro/case/result.rb', line 37 def use_case return @use_case if failure? raise Error::InvalidAccessToTheUseCaseObject end |