Class: Kotoshu::Results::Result::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/kotoshu/results/result.rb

Overview

This class is abstract.

Base result class.

Direct Known Subclasses

Failure, Success

Instance Method Summary collapse

Instance Method Details

#and_then {|value| ... } ⇒ Result::Success, Result::Failure

Chain operations if successful.

Yields:

  • (value)

    The wrapped value

Returns:



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

#errorStandardError?

Get the wrapped error (nil for Success).

Returns:

  • (StandardError, nil)

    The wrapped error or nil

Raises:

  • (NotImplementedError)


103
104
105
# File 'lib/kotoshu/results/result.rb', line 103

def error
  raise NotImplementedError
end

#failure?Boolean

Check if result is a failure.

Returns:

  • (Boolean)

    True if failed



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.

Yields:

  • (value)

    The wrapped value

Returns:



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.

Yields:

  • (error)

    The wrapped error

Returns:



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.

Returns:

  • (Boolean)

    True if successful



32
33
34
# File 'lib/kotoshu/results/result.rb', line 32

def success?
  is_a?(Success)
end

#unwrapObject

Unwrap the value or raise error.

Returns:

  • (Object)

    The wrapped value

Raises:

  • (Error)

    The wrapped error if this is a Failure



87
88
89
90
91
# File 'lib/kotoshu/results/result.rb', line 87

def unwrap
  return value if success?

  raise error
end

#valueObject?

Get the wrapped value (nil for Failure).

Returns:

  • (Object, nil)

    The wrapped value or nil

Raises:

  • (NotImplementedError)


96
97
98
# File 'lib/kotoshu/results/result.rb', line 96

def value
  raise NotImplementedError
end