Class: Teckel::Result

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

Overview

Wrapper for output and error return values of Operations

Examples:

asking for status


Teckel::Result.new("some output", true).successful? #=> true
Teckel::Result.new("some output", true).failure? #=> false

Teckel::Result.new("some error", false).successful? #=> false
Teckel::Result.new("some error", false).failure? #=> true

Use .value to get the wrapped value regardless of success state


Teckel::Result.new("some output", true).value #=> "some output"
Teckel::Result.new("some error", false).value #=> "some error"

Use .success to get the wrapped value of a successful result


# Note: The +.failure+ method works just the same for successful results
Teckel::Result.new("some output", true).success #=> "some output"
Teckel::Result.new("some error", false).success #=> nil
Teckel::Result.new("some error", false).success("other default") #=> "other default"
Teckel::Result.new("some error", false).success { |value| "Failed: #{value}" } #=> "Failed: some error"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, success) ⇒ Result

Returns a new instance of Result.

Parameters:

  • value (Mixed)

    the value/payload of the result.

  • success (Bool)

    whether this is a successful result



31
32
33
34
# File 'lib/teckel/result.rb', line 31

def initialize(value, success)
  @value = value
  @success = (!!success).freeze
end

Instance Attribute Details

#valueMixed (readonly)

Returns the value/payload.

Returns:

  • (Mixed)

    the value/payload



38
39
40
# File 'lib/teckel/result.rb', line 38

def value
  @value
end

Instance Method Details

#failure(default = nil, &block) ⇒ Object



48
49
50
51
52
53
# File 'lib/teckel/result.rb', line 48

def failure(default = nil, &block)
  return @value if !@success
  return yield(@value) if block

  default
end

#failure?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/teckel/result.rb', line 44

def failure?
  !@success
end

#success(default = nil, &block) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/teckel/result.rb', line 55

def success(default = nil, &block)
  return @value if @success

  return yield(@value) if block

  default
end

#successful?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/teckel/result.rb', line 40

def successful?
  @success
end