Class: Foobara::Outcome

Inherits:
Object
  • Object
show all
Defined in:
foobara-0.0.110/projects/common/src/outcome.rb

Defined Under Namespace

Classes: UnsuccessfulOutcomeError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result: nil, errors: nil, error_collection: ErrorCollection.new) ⇒ Outcome

Returns a new instance of Outcome.



48
49
50
51
52
53
54
55
56
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 48

def initialize(result: nil, errors: nil, error_collection: ErrorCollection.new)
  @error_collection = error_collection

  self.result = result

  if errors
    add_errors(errors)
  end
end

Instance Attribute Details

#error_collectionObject (readonly)

Returns the value of attribute error_collection.



46
47
48
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 46

def error_collection
  @error_collection
end

#resultObject

Returns the value of attribute result.



45
46
47
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 45

def result
  @result
end

Class Method Details

.error(error) ⇒ Object



36
37
38
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 36

def error(error)
  errors(Util.array(error))
end

.errors(*errors) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 22

def errors(*errors)
  errors = errors.flatten

  if errors.empty?
    # :nocov:
    raise "No errors given"
    # :nocov:
  end

  new.tap do |outcome|
    outcome.add_errors(errors)
  end
end

.raise!(errors) ⇒ Object



40
41
42
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 40

def raise!(errors)
  self.errors(errors).raise! unless errors.empty?
end

.success(result) ⇒ Object



16
17
18
19
20
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 16

def success(result)
  new.tap do |outcome|
    outcome.result = result
  end
end

Instance Method Details

#error_keysObject



103
104
105
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 103

def error_keys
  error_collection.keys
end

#errors_hashObject



95
96
97
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 95

def errors_hash
  error_collection.to_h
end

#errors_sentenceObject



99
100
101
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 99

def errors_sentence
  error_collection.to_sentence
end

#fatal?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 70

def fatal?
  errors.any?(&:fatal?)
end

#raise!Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 74

def raise!
  return if success?

  error = errors.first
  original_backtrace = error.backtrace_when_initialized

  if errors.size > 1
    error = UnsuccessfulOutcomeError.new(errors)
  end

  error.set_backtrace(original_backtrace)
  error.backtrace_when_raised = caller

  raise error
end

#result!Object



90
91
92
93
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 90

def result!
  raise!
  result
end

#success?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'foobara-0.0.110/projects/common/src/outcome.rb', line 66

def success?
  !has_errors?
end