Class: Foobara::Outcome
- Inherits:
-
Object
show all
- Defined in:
- foobara-0.0.141/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.141/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_collection ⇒ Object
Returns the value of attribute error_collection.
46
47
48
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 46
def error_collection
@error_collection
end
|
#result ⇒ Object
Returns the value of attribute result.
45
46
47
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 45
def result
@result
end
|
Class Method Details
.error(error) ⇒ Object
36
37
38
|
# File 'foobara-0.0.141/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.141/projects/common/src/outcome.rb', line 22
def errors(*errors)
errors = errors.flatten
if errors.empty?
raise "No errors given"
end
new.tap do |outcome|
outcome.add_errors(errors)
end
end
|
.raise!(errors) ⇒ Object
40
41
42
|
# File 'foobara-0.0.141/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.141/projects/common/src/outcome.rb', line 16
def success(result)
new.tap do |outcome|
outcome.result = result
end
end
|
Instance Method Details
#each_error ⇒ Object
68
69
70
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 68
def each_error(&)
error_collection.each(&)
end
|
#error_keys ⇒ Object
109
110
111
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 109
def error_keys
error_collection.keys
end
|
#errors ⇒ Object
64
65
66
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 64
def errors
error_collection
end
|
#errors_hash ⇒ Object
101
102
103
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 101
def errors_hash
error_collection.errors_hash
end
|
#errors_sentence ⇒ Object
105
106
107
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 105
def errors_sentence
error_collection.to_sentence
end
|
#fatal? ⇒ Boolean
76
77
78
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 76
def fatal?
error_collection.any?(&:fatal?)
end
|
#raise! ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 80
def raise!
return if success?
error = error_collection.first
original_backtrace = error.backtrace_when_initialized
if error_collection.size > 1
error = UnsuccessfulOutcomeError.new(error_collection)
end
error.set_backtrace(original_backtrace)
error.backtrace_when_raised = caller
raise error
end
|
#result! ⇒ Object
96
97
98
99
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 96
def result!
raise!
result
end
|
#success? ⇒ Boolean
72
73
74
|
# File 'foobara-0.0.141/projects/common/src/outcome.rb', line 72
def success?
!has_errors?
end
|